我有一个具有jquery验证的表单。我也有提交按钮,点击它时会重定向到page.html。因此,当我点击提交时,如果下拉列表的值为“请选择”,则会显示验证,然后重定向到page.html。我该如何阻止它这样做?我的jquery的代码:
<script>
$( function(){
function validate(id){
var enabled = ($("input[name='attendance" + id + "']:checked").val() == 'Yes');
if(enabled){
//Please select option is selected
if($("#colour" + id)[0].selectedIndex == 0){
alert('Please select color');
return false;
}
//Please select option is selected
if($("#shade" + id)[0].selectedIndex == 0){
alert('Please select shade');
return false;
}
}
return true;
};
$("input[name^='attendance']").click(function() {
var id = this.name.replace('attendance', '');
$("#colour" + id + ", #shade" + id).prop("disabled", this.value == 'No');
validate(id);
});
$("input:submit").click(function(){
var retVal = false;
$.each([1, 2], function(i, val){
retVal = (validate(val) || retVal);
});
return retVal;
});
});
</script>
答案 0 :(得分:1)
在验证失败时阻止表单提交调用event.preventDefault()
。
答案 1 :(得分:0)
试试这个,
$( function(){
function validate(id){
var enabled = ($("input[name='attendance" + id + "']:checked").val() == 'Yes');
if(enabled){
//Please select option is selected
if($("#colour" + id)[0].selectedIndex == 0 || $("#shade" + id)[0].selectedIndex == 0)
{
alert('Please select color');
return false;
}
}
return true;
};
$("input[name^='attendance']").click(function(e) {
var id = this.name.replace('attendance', '');
$("#colour" + id + ", #shade" + id).prop("disabled", this.value == 'No');
validate(id);
});
$("input:submit").click(function(event){
event.preventDefault();
var retVal = false;
$.each([1, 2], function(i, val){
retVal = (validate(val) || retVal);
});
if(retVal){$('#formID').submit();}
});
});
答案 2 :(得分:0)
<script type="text/javascript">
$(document).ready(function () {
function validate(id){
var enabled = ($("input[name='attendance" + id + "']:checked").val() == 'Yes');
if(enabled){
//Please select option is selected
if($("#colour" + id)[0].selectedIndex == 0){
alert('Please select color');
return false;
}
//Please select option is selected
if($("#shade" + id)[0].selectedIndex == 0){
alert('Please select shade');
return false;
}
}
return true;
}
$("input[name^='attendance']").click(function() {
var id = $(this).attr('id').match(/\d+(,\d+)?/)[0];
var val = ($(this).val() == 'No') ? true : false;
$('#colour'+id).attr("disabled", val);
$('#shade'+id).attr("disabled", val);
validate(id);
});
$("input:submit").click(function(event){
event.preventDefault();
var retVal = false;
$("input[name^='attendance']").each( function(){
var id = $(this).attr('id').match(/\d+(,\d+)?/)[0];
retVal = (validate(id) || retVal);
});
return retVal;
});
});
</script>
在html中你错过了提交按钮。我不清楚您的要求希望您可以修改上面的代码。并得到结果