我遇到的问题是我的jqm表单在移动浏览器(iPad 1 Safari,Android Dolphin)中无法正常工作,但在桌面浏览器(Win7上的Chrome,Firefox,Safari和IE9)中正常工作。
表单首先询问用户他们希望如何联系(电子邮件,短信和/或发布),然后根据此选择更新要求的字段(验证是通过validationEngine.js插件进行的)。 / p>
表单的示例可以是seen here。
脚本的逻辑是检查复选框是否被选中(或取消选中),然后添加(或删除)一个类以使其成为必需,如下所示。
$('body').delegate('#byEmail_label', 'click tap', (function(event) {
if (!$("#byEmail").is(":checked"))
{
$('#req_email').addClass('reqField');
$('#email').addClass("validate[required,custom[email]]");
}
else
{
$('#req_email').removeClass('reqField');
$('#email').removeClass("validate[required,custom[email]]").validationEngine('hide');
}
})
);
我在没有.delegate()的情况下100%工作,但是后来我无法通过ajax加载表单 - 添加.delegate后,除移动浏览器外,一切正常。
有没有人经历过类似的事情,或者知道如何才能让它发挥作用?
由于
答案 0 :(得分:1)
最后通过将所有jquery移到
之外来解决我自己的问题 $(document).ready(function () {...
并进入
$('*').delegate('body','pagecreate', function(){...
即:
$('*').delegate('body','pagecreate', function(){
$('#byEmail_label').tap(function(event) {
if ($("#byEmail").is(":checked"))
{
$('#req_email').addClass('reqField');
$('#email').addClass("validate[required,custom[email]]");
}
else
{
$('#req_email').removeClass('reqField');
$('#email').removeClass("validate[required,custom[email]]").validationEngine('hide');
}
});
});
现在我的脑袋感觉更好......不再在桌子上敲打它......
答案 1 :(得分:0)
我也遇到过复选框和收音机的麻烦,这就是我用过的东西。可能有助于检查值,而不是检查它。
alert($('input[name=byEmail]:checked').val());
或
var cb_val = $('input[name=byEmail]:checked').val() == true;
或
var cb_val = ($('input[name=byEmail]:checked').val() == 'blah') ? true:false;
也许是这样的
var addValidation = ($('input[name=byEmail]:checked').val() != '') ? true:false;
if(addValidation) {
$('#req_email').addClass('reqField');
$('#email').addClass("validate[required,custom[email]]");
} else {
$('#req_email').removeClass('reqField');
$('#email').removeClass("validate[required,custom[email]]").validationEngine('hide');
}