我们有一个表格,用户可以匿名发表意见,但如果他们想留下他们的电子邮件地址进行跟进,他们可以。如果他们选择留下他们的电子邮件,我们希望他们查看他们阅读我们隐私政策的方框。如果他们选择不留下电子邮件地址,则他们不需要选中此框。
以下是表单页面上的Javascript代码。它不适用于这两个条件,如果选中该框,我只能使它工作:
<script type="text/javascript">
$(document).ready(function(){
$("#form").submit(function(event){
if (!$("input[type='checkbox']").attr("checked")){
if ($("input[name$='Mail']").val() !== "") {
alert("内容に同意ください。");
event.preventDefault();
}
}
});
});
</script>
谢谢
答案 0 :(得分:1)
jQuery对象中没有.value
属性。而是使用.val()
并使用相等运算符而不是赋值运算符。
if (!$("input[name$='Mail']").val() === "") {
答案 1 :(得分:1)
您的情况似乎是,如果电子邮件字段中有内容,则必须选中该复选框。据推测,表单控件都有名称(否则它们不会成功),所以验证功能可以非常简单:
$("#form").submit(function(){
// If there's something in the email fiend and the checkbox isn't checked
// show the message
if (this.emailControlName.value != '' && !this.checkboxName.checked) {
alert("内容に同意ください。");
return false;
}
}
});
以下&#34;工作&#34;完全按照您的要求:
<script>
$(document).ready(function(){
$("#form").submit(function(){
if (this.email.value != '' && !this.readAgreement.checked){
alert("内容に同意ください。");
return false;
}
});
});
</script>
<form id="form">
email:<textarea name="email"></textarea><br>
read agreement:<input type="checkbox" name="readAgreement" value="yes"><br>
<input type="submit">
</form>
请注意您的位置:
if (!$("input[type='checkbox']").attr("checked")){
检查选中的属性,而不是已检查的属性。对于当前版本的jQuery(1.11),如果输入没有checked属性,即类似于上面的格式,那么...attr('checked')
将返回 undefined 并且即使用户检查输入,表达式也会解析为 false 。
至少1.7版本,jQuery混淆了属性和属性,而 attr 方法返回了checked属性,而不是属性。
答案 2 :(得分:0)
你想要这个:
if (!$("input[name$='Mail']").value = "") {
改为:
if ($("input[name$='Mail']").val() !== "") {
您的版本正在为该值分配""
;由于""
评估为false
,因此if
条件永远不会成立。
答案 3 :(得分:0)
您可以使用“.is(”::checked“)”来检查复选框的状态,如下所示:
<script type="text/javascript">
$(document).ready(function(){
$("#form").submit(function(event){
if ($("input[type='checkbox']").is(":checked")){
if ($("input[name$='Mail']").val() !== "") {
alert("内容に同意ください。");
event.preventDefault();
}
}
});
});
</script>
如果您想仅在邮件不为空时选中复选框,则必须:
<script type="text/javascript">
$(document).ready(function(){
$("#form").submit(function(event){
if ($("input[name$='Mail']").val() !== "") {
if ($("input[type='checkbox']").is(":checked")){
alert("内容に同意ください。");
event.preventDefault();
}
}
});
});
</script>