我有一个下拉选择框和输入文本框。选择框显示我的类别,其外观如下:
<select id="category" name="category">
<option value="">Please select...</option>
<option value="1">Category-1</option>
<option value="2">Category-2</option>
<option value="3">Category-3</option>
<option value="4">Other</option>
</select>
输入文字框如下:
<input type="text" id="otherCategory" name="otherCategory" value="" style="display: none;">
我的问题是。当用户仅选择&#34;其他&#34;从下拉列表然后我需要填充输入文本。
我试过这样的事情:
$(document).ready(function() {
$('#category').change(function() {
var myValue = $(this).val();
var myText = $("#category :selected").text();
if (myText != '' AND myText == "Other") {
$("#otherCategory").show();
}
});
});
但是我无法让它发挥作用。任何人都可以告诉我如何解决这个问题。
注意:我的下拉列表选择动态填充。
谢谢。
答案 0 :(得分:6)
您在&&
条件下缺少if
。另外,你的情况
myText != ''
是多余的,不是必需的。
当选择更改时,您需要隐藏input
。
$(document).ready(function () {
$('#category').on('change', function () {
var myValue = $(this).val();
var myText = $.trim($("#category :selected").text()).toLowerCase(); // Trim spaces and convert to lowercase for comparison
$("#otherCategory").toggle(myText === 'other');
});
});
答案 1 :(得分:4)
您需要使用&&
代替AND
<强> Live Demo 强>
if (myText != '' && myText === "Other") {
$("#otherCategory").show();
}
您可以通过隐藏选项以进一步优化它,然后选择“其他”。 当你将它与字符串'other'进行比较时,你不需要检查它是否为空,所以我从if语句中删除了这个条件。
$('#category').change(function () {
$(this).find(":selected").text() === "Other" ?
$("#otherCategory").show() : $("#otherCategory").hide();
});
答案 2 :(得分:2)
如果用户选择其他选项显示输入字段,则尝试此Demo。
$(document).ready(function() {
$('#category').change(function() {
var myValue = $(this).val();
var myText = $("#category :selected").text();
if (myText == "Other") {
$("#otherCategory").show();
}
else{
$("#otherCategory").hide();
}
});
});