The measure was announced by the Swiss government on Friday and will come into effect immediately, lasting until at least 15 March.
Authorities said the decision was taken "in view of the current situation and the spread of the coronavirus."
The government said in a statement: "The Federal Council is aware that this measure will have a significant impact on public life in Switzerland. However, the move is expected to provide effective protection to people in Switzerland and to public health.
"It should prevent or delay the spread of the disease in Switzerland, thus reducing its momentum."
Organisers of events expecting fewer than 1,000 people must "carry out a risk assessment in conjunction with the competent cantonal (state) authorities to decide whether or not the event can be held".
The announcement comes as the number of confirmed cases in Switzerland rises to 15, just days after it confirmed its first case on Tuesday.
According to the Swiss Broadcasting Corporation, one of the cases involving a children's daycare worker in Basel City has led to all children under the patient's care being quarantined for 14 days.
Over 500 people have been tested in Switzerland so far. The Health Ministry announced on Wednesday ten laboratories can now conduct testing for the virus.
Usually attracting tens of thousands of visitors each year, the annual Geneva International Motor Show will likely be affected. The event was due to take place from 5 March till 15 March.
A number of major events, including the Engadin ski marathon, two watch fairs and carnivals in Ticino, which borders Italy, were already cancelled.
Saudi Arabia made the extraordinary decision to cut off the holy city of Mecca to millions of pilgrims in a bid to stop Covid-19 from spreading.
The Netherlands confirmed its second coronavirus infection on Friday in the Dutch capital of Amsterdam. Both patients are being held in isolation, said the National Institute for Public Health.
Wales confirmed its first infection in a patient who travelled back to Wales from Northern Italy, where an outbreak has infected over 650 people. The new case brings the total number of cases in the UK to 19, including two new cases confirmed in England.
Join our commenting forum
Join thought-provoking conversations, follow other Independent readers and see their replies