我有一个 jquery 对话框,它使用非 jquery javascript 函数来完成功能,具体取决于选择了哪个按钮。我在对话框中添加了一个复选框,用户必须选中该复选框以表示了解将发生的情况。
当我将选中状态的测试添加到非 jquery javascript 时,选中状态始终返回为 false。
以下是代码。前两个警报和返回语句用于测试:
function acceptPitch()
{
// the two alerts and return false are for testing only
alert('jq=' + $('#understand').prop("checked"));
alert('checkbox=' + document.getElementById('understand').checked);
return false;
if (document.getElementById('understand').checked)
{
handleUserDelay();
$('#decision').val('yes');
document.forms['cancellationForm'].submit();
return true;
}
else
{
alert('[appropriate message here]');
return false;
}
}
如果复选框不在对话框中,则上述功能按预期工作。但是当它被放置在对话框中时,“checked”的测试总是返回 false。
这是对话框的主要代码:
var $dialog_cancel = $('#rh-dialog.cancel');
$dialog_cancel.dialog(
{
autoOpen:false,
width:500,
modal:true,
draggable:true,
resizable:false
});
$('#reason').change(function()
{
var reason1 = $(this).val().substr(0,1);
if (reason1 == 'n')
{
$('#pitch').html($('#pitch-no').html());
$('#acceptPitchButton').val($('#free-button-text').html());
}
else if (reason1 == 'y')
{
$('#pitch').html($('#pitch-yes').html());
$('#acceptPitchButton').val($('#perp-button-text').html());
}
else
{
validCancelReason();
}
});
$('#requestCancelButton').click(function()
{
if (validCancelReason())
{
$dialog_cancel.dialog('open');
}
});
以下是从“查看源代码”列表中获取的标记。请注意,jquery 仅用于显示最后四个 div 中的两个,并且 jquery 还进行了一些其他调整:
<div id="rh-dialog" class="cancel" title="Confirm Cancellation">
<p>
This will request cancellation of your continuing subscription service.<br />
</p>
<div id="pitch"></div>
<p style="font-style: italic; margin-top:10px;">
Please click <strong>YES!</strong> to continue your plan, or <strong>No, Thank You</strong> to cancel.
</p>
<div>
<div id="rh-dialog-button-1">
<input type="button" id="acceptPitchButton" value="Don't Cancel" onclick="bar1.showBar(); acceptPitch();" />
</div>
<div id="rh-dialog-button-2">
<input type="button" id="rejectPitchButton" value="No, Thank You, Just Cancel" onclick="bar1.showBar(); rejectPitch();" />
</div>
</div>
</div>
<div id="pitch-no" class="no-disp"><strong>GET ONE FREE MONTH!</strong><br />It is very important to us that all of our subscribers have success with our service, not only in speaking with reps but in actually growing your business. Given you are canceling because you were unsatisfied, we would like to offer you <strong>one FREE month.</strong><br /><br />To take advantage of this offer simply click <strong>Yes! Free Month</strong> and your credit card or PayPal account will not be charged for the next month.<br /><br />After your free month, you can choose to cancel your subscription or continue on with our Maintenance plan.<br/><br/><form id="agree-form"><input type="checkbox" id="understand"><strong>I understand</strong> that by requesting a free month I am not canceling my subscription, and that after the free month is over, my credit card or PayPal account will be charged for the next month of service and again every month thereafter until I do cancel.</input></form></div>
<div id="pitch-yes" class="no-disp"><strong>BARGAIN PRICE PERPETUITY PLAN!</strong><br />You realize that placing quality sales reps requires a continual effort trolling for reps at all times because timing is of the essense. For that reason, we would like to offer you our <strong>Perpetuity Plan</strong>.<br /><br />This plan is only USD $79/month, cancel anytime, and you can lock into that rate for life.<br /><br />Click <strong>Yes! Perpetuity Plan</strong> to switch to the Perpetuity Plan.</div>
<div id="free-button-text" class="no-disp">Yes! Free Month - Continue Subscription</div>
<div id="perp-button-text" class="no-disp">Yes! Perpetuity Plan</div>
另外,我正在添加一个屏幕截图:
(来源:oofdah.com)