我有一个select
标记,其中包含两个选项' new'和'编辑'
当有人选择“' new'选项应该标记该表单中的所有input
标记,并且当有人选择“编辑”时,只需要标记几个。
<select name="todo" id="todo" required>
<option value="">---</option>
<option value="new">Add</option>
<option value="edit">Edit</option>
</select>
现在我尝试了一些功能,但它们似乎无法正常工作
<script>
var todo = $('#todo option:selected').text();
if (todo == "new") {
$('#Name').attr('required',true);
} else if (todo == "edit") {
//code
}
</script>
和
<script>
function req() {
var selectBox = document.getElementById('todo');
var userInput = selectBox.options[selectBox.selectedIndex].value;
if (userInput == 'new') {
$('#Name').attr('required',true);
} else if (todo == "edit") {
//code
}
}
</script>
where
<select name="todo" id="todo" onchange="return req();" required></select>
只是为了确定它是否有效我将alert()
方法置于if条件中,但该警报永远不会被触发。
PS。其中一个输入标签是
<input type="text" id="Name" name="Name">
感谢您提前的时间......
修改
正如@Maximillian Laumeister在第二段中指出的那样,有一个拼写错误(我在这里已经纠正过)。 (对不起)
答案 0 :(得分:2)
在你的脚本中,你有一个输入控制台错误的拼写错误:
function req() {
var selectBox = document.getElementById('todo');
var userInput = selectBox.options[selectbox.selectedIndex].value;
if (userInput == 'new') {
$('#Name').attr('required',true);
} else if (todo == "edit") {
//code
}
}
它说的地方
selectBox.options[selectbox.selectedIndex].value
selectBox需要像这样大写:
selectBox.options[selectBox.selectedIndex].value
这一改变似乎对我有用。
此外,既然你问过,你的第一个脚本不起作用,因为当select选择改变时需要绑定运行,就像第一个脚本一样。此外,您需要使用jQuery的val
代替text
来获取option
代码的值。这是第二个脚本的工作版本:
$("#todo").change(function () {
var todo = $('#todo option:selected').val();
if (todo == "new") {
$('#Name').attr('required',true);
} else if (todo == "edit") {
//code
}
});
答案 1 :(得分:1)
试试这个:
$("select").change(function(){
if($(this).val() === "new")
$("#Name").attr("required","required");
});
您使用了option
文本“Add”,但在if语句中,您将其与字符串“new”进行了比较。这就是你的代码没有按预期工作的原因。
答案 2 :(得分:1)
这应该足以让你前进。 只要进行了不同的选择,onchange就会检测到。然后根据选择的选项执行不同的指令。
jQuery(document).ready(function(){
jQuery('#todo').on('change', function(event){
alert(this.value);
if(this.value === 'edit'){
}
else if(this.value === 'new'){
}
})
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<select name="todo" id="todo" required>
<option value="">---</option>
<option value="new">Add</option>
<option value="edit">Edit</option>
</select>
&#13;