2012-07-25 27 views
9

Estoy usando el plugin jQuery Chosen en mi aplicación ASP.NET MVC. El atributo data-placeholder no funciona cuando la lista desplegable tiene elementos. En lugar de mostrar texto predeterminado, selecciona automáticamente el primer elemento de la lista.jQuery Chosen no muestra el marcador de posición de datos cuando está lleno

Así es como defino mi lista desplegable.

@Html.DropDownListFor(m => m.Keep, Model.Data, 
    new { @class = "chzn-select", data_placeholder = "Default..." }) 

Si Model.Data está vacío (se completa en el modelo de visualización con EF), se muestra el texto predeterminado. De lo contrario, se selecciona el primer elemento. Siempre quiero que mi lista desplegable muestre el valor predeterminado.

Aplico el complemento a través de $('.chzn-select').chosen(); Nada especial.

¿Alguna idea? Gracias por adelantado.

Respuesta

19

Primero debe agregar una opción vacía.

según la documentación - http://harvesthq.github.com/chosen/

Nota: en selecciona individuales, el primer elemento se supone que es seleccionado por el navegador. Para aprovechar el soporte de texto predeterminado, deberá incluir una opción en blanco como primer elemento de su lista de selección.

uso pueden ser jQuery para agregarlo

$(".chzn-select").prepend("<option></option>"); 
+0

gracias. funcionó. –

+1

Si está utilizando ASP.Net debe hacer todo inicialmente con Razor como @SametGunaydin respondida y no hacer dar un paso adicional en jQuery –

0

Becoz su valor por defecto es reemplazado por sus valores en la lista. Entonces, para mostrar su valor predeterminado, agregue ese valor predeterminado en su lista como primer elemento.

0

Comprobar si hay registro de unión al primer elemento de la lista y su modelo

+0

Esto podría ser más apropiado como comentario que como respuesta. –

5
@Html.DropDownListFor(model => model.categoryModel.Id, ViewBag.CategoryList as SelectList, "", new { @class = "chzn_a", data_placeholder = "Choose Category.." }) 

complemento "" después de su SelectList, si está por debajo de código no funcionaba a que

$(".chzn_a").prepend("<option></option>"); 
0

Soporte de texto predeterminado

Elegido establece automáticamente el texto de campo predeterminado ("Elija un país ...") leyendo el valor del marcador de posición del elemento de selección. Si no está presente ningún valor de marcador de posición de datos, estará predeterminado en "Seleccionar una opción" o "Seleccionar algunas opciones" dependiendo de si la selección es única o múltiple. Puede cambiar estos elementos en el archivo plugin js como mejor le parezca.

Nota: en selecciones simples, se supone que el primer elemento es seleccionado por el navegador. Para aprovechar el soporte de texto predeterminado, deberá incluir una opción en blanco como primer elemento de su lista de selección. Ver: Default Text Support

0

Si el código incluso con la adición de blanco option, no funciona; ¡entonces deberías saber que algunas veces el navegador necesita una nueva página para cargar código y entrar en vigencia!

así que cierre su lengüeta y abra la nueva pestaña y vaya a la página de su proyecto para ver los cambios.

1

que tenía el mismo problema y lo hice lo siguiente:

cuando inicializar el campo elegido tienes que no utilice% en el tamaño de la anchura.

$(".chosen").chosen({ 
'no_results_text' :'Oops, nothing found!', 
'width'   :'700px', 
'search_contains' : true, 
'placeholder_text_multiple':'Please choose something ...', 
'display_selected_options':false    

});

Cuestiones relacionadas