我正在尝试在未选中复选框时显示警告消息。我为此目的使用以下代码
function IsEmpty(){
var oldpath = document.forms['pathuploader'].oldpath.value;
var newpath = document.forms['pathuploader'].newpath.value;
var metavalue = !document.forms['pathuploader'].chkmeta.checked;
var postvalue = !document.forms['pathuploader'].chkpost.checked;
if((oldpath == "")||((oldpath.substring(0,4))!='http')||((oldpath.substring(0,4))=='Http'))
{
alert("Enter a valid URL");
return false;
}
if((newpath == "")||(newpath.substring(0,4)!='http')||(newath.substring(0,4)!='Http'))
{
alert("Enter a valid URL");
return false;
}
if((metavalue) && (postvalue))
{
alert("Select any category to change");
return false;
}
return true;
}
答案 0 :(得分:1)
工作JSFiddle
首先,您在下一行中输入错误
if((newpath == "")||(newpath.substring(0,4)!='http')||(newath.substring(0,4)!='Http'))
最后一个if是“newath”应该是“newpath”并且相同的区域“!=”应该与oldpath逻辑匹配,而是“==”。
要稍微清理代码,请使用“===”和“!==”而不是“==”,因为这会强制进行更精确的比较。
有关详情use strict mode
,请参阅此链接这是调整后的代码
另外,如果您希望遵守JS标准,请尝试使用camelCase命名约定。我已将“IsEmpty”函数更正为“isEmpty”作为示例。
function isEmpty(){
var oldpath = document.forms['pathuploader'].oldpath.value;
var newpath = document.forms['pathuploader'].newpath.value;
var metavalue = !document.forms['pathuploader'].chkmeta.checked;
var postvalue = !document.forms['pathuploader'].chkpost.checked;
if((oldpath === "")||((oldpath.substring(0,4))!=='http')||((oldpath.substring(0,4))==='Http'))
{
alert("Enter a valid old URL");
return false;
}
if((newpath === "")||(newpath.substring(0,4)!=='http')||(newpath.substring(0,4)==='Http')){
alert("Enter a valid new URL");
return false;
}
if((metavalue) && (postvalue)){
alert("Select any category to change");
return false;
}
return true;
}
更新我也同意BANG(!)所应的“Sourabh”。如在
if(( !metavalue ) && ( !postvalue ){
而不是目前的情况。两者都有效,但BANG隐藏在变量中。如果你确实保持原样,也许你可以通过调用它来提醒可能查看你代码的下一个程序员
var metaValueNotChecked = !document.forms...
var postValueNotChecked = !document.forms...
然后它将正确读作
if(( metaValueNotChecked ) && ( postValueNotChecked ){
在这种情况下,BANG应该是你拥有它的地方。
希望这有帮助!
答案 1 :(得分:0)
使用以下程序更好的方法来做到这一点,我假设你在表单中定义了元素,你需要更改这两部分代码
第一
var metavalue = document.forms['pathuploader'].chkmeta.checked;
var postvalue = document.forms['pathuploader'].chkpost.checked;
然后在if条件下使用以下程序:
if(!metavalue && !postvalue)
{
alert("Select any category to change");
return false;
}
答案 2 :(得分:0)
您可以使用HTML5中的“必需”,并在选中复选框后将其从复选框的每个其他位置删除。例如:
<input required="required" value="1" name="site[source][]" id="site_source_any" type="checkbox">
<input required="required" value="2" name="site[source][]" id="site_source_many" type="checkbox">
在您的脚本文件中:
<script type="text/javascript">
// Check if atleast one of the checkbox is checked
$(function(){
var requiredCheckboxes = $(':checkbox[required]');
requiredCheckboxes.change(function(){
if(requiredCheckboxes.is(':checked')) {
// Remove Required once at-least one is checked
requiredCheckboxes.removeAttr('required');
}
else {
requiredCheckboxes.attr('required', 'required');
}
});
});
</script>