2013-06-04 54 views
0

重视我提交这份表单之前需要验证:校验和的选择

<form action="<?php echo $editFormAction; ?>" method="POST" id="form1" name="contract"> 
<table class="myp-table"> 
<tr> 
<td>Value Test</td> 
</tr> 
<?php do { ?> 
<tr> 
<td><select name="playerContract[]"> 
        <option value="0" <?php if (!(strcmp(0, $row_datacontract['playerContract']))) {echo "selected=\"selected\"";} ?>>0</option> 
        <option value="1" <?php if (!(strcmp(1, $row_datacontract['playerContract']))) {echo "selected=\"selected\"";} ?>>1</option> 
        <option value="2" <?php if (!(strcmp(2, $row_datacontract['playerContract']))) {echo "selected=\"selected\"";} ?>>2</option> 
        <option value="3" <?php if (!(strcmp(3, $row_datacontract['playerContract']))) {echo "selected=\"selected\"";} ?>>3</option> 
        </select></td> 
</tr> 
<?php } while ($row_datacontract = mysql_fetch_assoc($datacontract)); ?> 
<tr> 
<td><input class="linkbuttonmp" name="contract" type="submit" value="Invio" /></td></tr> 
</table> 
</form> 

由用户选择的值的总和不得超过默认值,其在我的情况下,是从检索到的值我数据库。

我用jQuery试过这样:

var max = 3; 

$("#form1 select").change(function() { 

    var selects = <?php echo $row_datacoach['coachContract']; ?>; 

    $("#form1 select").each(function() { 

     selects = selects + parseInt($(this).val()); 

    }); 


    if(selects >= max) { 
     $("#submit").attr("disabled","disabled"); 
    } else { 
     $("#submit").removeAttr("disabled"); 
    } 

}); 

遗憾的是它不工作。

你能帮我吗?

UPDATE

抱歉,我犯了一个错误:下面是脚本其实我试过:

<script type="text/javascript"> 
var max = <?php echo $row_datacoach['coachContract']; ?>; 

$("#form1 select").change(function() { 

    var selects = 0; 

    $("#form1 select").each(function() { 

     selects = selects + parseInt($(this).val()); 

    }); 


    if(selects >= max) { 
     $("#submit").attr("disabled","disabled"); 
    } else { 
     $("#submit").removeAttr("disabled"); 
    } 

}); 
</script> 
+2

您的形式没有一个ID' – adeneo

+2

一旦你修好了(注意,为了这个目的,'.prop()'方法比'.attr()'更好,特别是因为你可以简化为'$(“#submit”)。prop(“disabled” > = max);'。 (我希望你提供一些说明,告诉用户为什么提交按钮可能会被禁用,或者他们需要做些什么来重新启用它...) – nnnnnn

+0

@nnnnnn - 刚才输入的那个? – adeneo

回答

3

从数据库中获取的价值需要被分配到变量maxselects有初始值为0

我觉得应该是

var max = <?php echo $row_datacoach['coachContract']; ?>; 

$("#form1 select").change(function() { 
    var selects = 0; 
    $("#form1 select").each(function() { 
     selects = selects + parseInt($(this).val()); 
    }); 

    if(selects >= max) { 
     $("#submit").attr("disabled","disabled"); 
    } else { 
     $("#submit").removeAttr("disabled"); 
    } 

}); 

演示:Fiddle

0

增加号码至形式:

<form action="" method="POST" name="contract" id="form1"> 

然后执行:

var max = 3; 

$("#form1 select").on('change', function() { 
    var selects = 0; 
    $("#form1 select").each(function() { 
     selects += parseInt(this.value, 10); 
    }); 

    $("#submit").prop('disabled', selects >= max); 
}); 
+0

你说得对,我忘了在表单中添加id。我尝试了你的建议,但没有奏效 – blips