2013-05-07 4 views
1

У меня есть ниже JQuery скриптJquery не отображаются поля формы

<script> 
$(document).ready(function(){ 
    $('#bashing_title').change(function(){ 
     $(".selectInput").hide(); 
     $("#"this.value).show(); 
    }); 
}); 

</script> 

Это, предполагают, чтобы отобразить поле формы при выборе раскрывающийся. Но его нет. Я предполагаю, что его, вероятно, потому, что HTML генерируемый

<option value="Title 1" value="1">Title 1</option> 

Но если изменить код abover Jquery к этому

<script> 
$(document).ready(function(){ 
    $('#bashing_title').change(function(){ 
     $(".selectInput").hide(); 
     $("#1").show(); 
    }); 
}); 

</script> 

Он работает. Но у меня около 10 различных идентификаторов вариантов. Как это исправить?

Я надеюсь, что я имею в осмыслении

ответ

2

Изменение

$("#"this.value).show(); 

к

$("#"+this.value).show(); 

и удалить дубликаты value атрибут, то есть изменить

<option value="Title 1" value="1">Title 1</option> 

до

<option value="1">Title 1</option> 
+0

В чем разница? – psharma

+0

Ну, есть '+'. Это изменяется от синтаксической ошибки до конкатенации строк. –

+0

правильно, но он все еще не работает. – psharma

1

Вы должны написать.

$("#"+this.value).show(); 
+0

да, но его не работает. не отображая текстовое поле. Я предполагаю, что это имеет какое-то отношение к целым и строковым значениям. – psharma

1

изменить его $ ("#" + this.value) .show();

1

Может быть так просто, как добавление «+» между # и this.value

1

Вам необходимо правильно concate строку:

$("#" + this.value).show(); 

Кроме того, есть ошибка в вашем HTML-разметки, оно должно быть таким:

<option title="Title 1" value="1">Title 1</option> 

Вместо этого:

<option value="Title 1" value="1">Title 1</option> 

где у вас есть два значения, что вызывает проблему в вашем случае.

+0

правый, но вот как это сгенерировано. Если это так, знаете ли вы, как настроить свой jquery-скрипт для принятия заголовков/строк вместо instnace 'Pick a reason' вместо' 0'? – psharma

0

this не содержит строку, но содержит объект: сам элемент. this не имеет объекта под названием value, так что this.value не будет работать. Вы должны получить доступ к ребенку, который был выбран либо this.options[this.selectedIndex].value, либо через jQuery $(this).val(). Это должно быть рабочим решением:

$(document).ready(function(){ 
    $('#bashing_title').change(function(){ 
     $(".selectInput").hide(); 
     var element = $(this).val(); 
     $("#" + element).show(); 
    }); 
}); 
Смежные вопросы