Mac OSX中Safari中的Javascript不起作用

Mac OSX中Safari中的Javascript不起作用,javascript,jquery,validation,safari,Javascript,Jquery,Validation,Safari,我有一个付款页面,客户在其中输入他们的信用卡详细信息。我已经删除了所有不相关的部分 奇怪的是,我的前端验证在FF、IE和Safari for windows上运行良好。它只是在MacOSX中的Safari上失败了 出现问题的特定用户代理字符串: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-us) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19 M

我有一个付款页面,客户在其中输入他们的信用卡详细信息。我已经删除了所有不相关的部分

奇怪的是,我的前端验证在FF、IE和Safari for windows上运行良好。它只是在MacOSX中的Safari上失败了

出现问题的特定用户代理字符串:

Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-us) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; en) AppleWebKit/531.9 (KHTML, like Gecko) Version/3.1.2 Safari/525.22
由于某些原因,它并没有强制在提交之前选择月份和年份,并且后端验证出错

任何帮助都将不胜感激。我无法复制

代码如下:

<form action="XXXXXXXX" class="full" id="schedule_payment" method="POST">


<select name="expiration_month" id="expiration_month">
    <option value="">Month</option>
    <option value="01">01 - Jan.</option>
    <option value="02">02 - Feb.</option>
    .......
</select> 
<select name="expiration_year" id="expiration_year">
    <option value="">Year</option>
    <option value="09">2009</option>
    <option value="10">2010</option>
    <option value="11">2011</option>
    .........
</select>


<input type="image" id="submit_image" src="confirm-details.png" value="Submit" alt="Confirm Details">
</form>




<script type="text/javascript">

$(document).ready(function(){

    $("#schedule_payment").validate({               
        submitHandler:function(form) {
            if ($("#new_card").attr("checked")) {
                if ($("#expiration_year").val() == "" || $("#expiration_month").val() == "") {
                    alert("Please check the expiration date.");
                    return;
                }

                var isExpired = false;

                if (parseInt("20" + $("#expiration_year").val()) < 2009 ) {
                    isExpired = true;
                } else if (  (parseInt("20" + $("#expiration_year").val()) == 2009 ) & 
                            (parseInt($("#expiration_month").val(),10) < parseInt(09,10))) {
                    isExpired = true;
                }

                if (isExpired) {
                    alert("Card is expired.  Please check expiration data and try again.");
                    return;
                } 
            }
            form.submit();
    }, 
XXXXXX

月
01-1月。
02-2月。
.......
年
2009
2010
2011
.........
$(文档).ready(函数(){
$(“#计划付款”)。验证({
submitHandler:函数(表单){
如果($(“#新卡”).attr(“选中”)){
如果($(“#到期日(年”).val()==”| |$(“#到期日)月”).val()==”){
提醒(“请检查有效期。”);
返回;
}
var isExpired=false;
如果(parseInt(“20”+$(“#到期(u年”).val())<2009){
isExpired=真;
}否则如果((parseInt(“20”+$(“#到期#年”).val()==2009)和
(parseInt($(“#到期月”).val(),10)
这可能是一个问题,因为选中的属性并不总是添加到输入中。 你可以试着把它改成

if($("#new_card:checked").length){
甚至

$('#new_card').each(function(){
if(this.checked){
}
})
如果所有其他操作都失败

则倾向于将此样式用于复选框:

if($('#your_checkbox_id').is(':checked')) {
  alert('checked!');
} else {
  alert('not checked!');
}
下面是确定复选框是否选中的另一种方法:

if($('#your_checkbox_id:checked').length) {
  alert('checked!');
} else {
  alert('not checked!');
}

您是否在Safari中打开了控制台?--如果代码错误,它应该会生成错误消息,并且它有一个完整的js调试器,可能也会有所帮助。

为什么它在Windows上的Safari中工作,但在Safari for OSX上不在同一版本中工作?它们使用不同的渲染/javascript引擎吗?是否真的需要插入您的站点?真的吗ly?这篇文章与我的答案和处理jQuery中的复选框有关。请随意单击向下、向上和向左几百像素的箭头:)它实际上是一个单选按钮。您建议用什么方法将其选中?在windows版本的Safari 3或4上没有错误。我正在尝试跟踪mac以进行测试。
if($('#your_checkbox_id:checked').length) {
  alert('checked!');
} else {
  alert('not checked!');
}