Javascript“submit();”找不到函数错误

时间:2011-01-07 11:10:40

标签: javascript submit form-submit

我的表格为

<form name="selectdoctype" method="post" action="" id="selectdoctype">
<table style="border:none;">
<tr><td colspan="2"> (<span class="asterisk" style="color:#FF0000;">*</span>) Mandatory</td></tr>
<tr>
    <td style="border-right:none">Document Name:</td>

    <td style="border-right:none">
        <input type="text" name="doc_name" value="" /><span class="asterisk" style="color:#FF0000;">*</span>
    </td>
</tr>
<tr>
    <td style="border-right:none">Document type:</td>
    <td style="border-right:none">
    <select name="doctype_id" onchange="doPaymentfor(this.value);"><option value="-1" >--Select Document Type--</option>
        <?php 
        foreach($arr_createdoc as $doctype){
        ?>
        <option value="<?php echo $doctype['doctype_id'];?>"><?php echo $doctype['doctype_name'];?></option>
        <?php }?>
    </select>
    </td>
</tr>

<tr>
    <td style="border-right:none" id="purchaselabel"></td>
    <td style="border-right:none">
    <select name="purchasedoc_id" id="purshasedocs" style="display:none;"><option value="-1" >--Select Document Type--</option>
        <?php 
        foreach($arr_purchasedoc as $docpurchase){
        ?>
        <option value="<?php echo $docpurchase['doc_id'];?>"><?php echo $docpurchase['doc_name'];?></option>
        <?php }?>
    </select>
    </td>
</tr>

<tr>
    <td style="border-right:none">Document Distribution:</td>

    <td style="border-right:none">
        <select name="distribution_id">
         <option value="-1">---Select Distriution---</option>
         <?php foreach($arr_distribution as $distribution){?>
         <option value="<?php echo $distribution['distribution_id'];?>"><?php echo $distribution['distribution_name'];?></option>
         <?php }?>
        </select>
    </td>
</tr>
<tr>
    <td colspan="2" align="center" style="border-right:none">
        <input type="button" name="submit" value="Proceed" class="submit" onclick="valdocAddEdit(this.form);"/>
    </td>
</tr>   
</table>
</form>

和javascript的功能为

function valdocAddEdit(frm) {
        if ((frm.doc_name.value == null) || (frm.doc_name.value == "")) {
            alert("Please enter Document Name!")
            frm.doc_name.focus()
            return false;
        }


        if(frm.doc_name.value.length > 50) {
            alert("Document Name can not be more than 20 characters!");
            frm.doc_name.focus();
            return false;
        } 



        if(frm.doctype_id.value == "-1") {
            alert("Please Select Document Type Name!");
            frm.doctype_id.focus();
            return false;
        } 

        if(frm.doctype_id.value == "1") {
            if(document.getElementById('purshasedocs').style.display == "block"){
                if(frm.purchasedoc_id.value == "-1"){
                    alert("Please Select Purchase Order Name!");
                    frm.purchasedoc_id.focus();
                    return false;
                }
            }
        } 

        if(frm.distribution_id.value == "-1") {
            alert("Please Select Distribution Name!");
            frm.distribution_id.focus();
            return false;
        } 
        frm.submit();

    }

但是,只要验证了所有的javascript验证,表单就不会被提交,因为产生了javascript错误 “frm.submit在firebug中不是一个函数”

有人可以告诉我代码出错的地方吗?

3 个答案:

答案 0 :(得分:2)

Hei如果你有一个名为submit的按钮,则submit()函数将无效。重命名

<input type="button" name="submit" value="Proceed" class="submit" onclick="valdocAddEdit(this.form);"/> 

到别的地方

例如:

<input type="button" name="submit_btn" value="Proceed" class="submit" onclick="valdocAddEdit(this.form);"/>`

答案 1 :(得分:1)

您没有正确指定表单。

快速修复:

就在这条线下面:

function valdocAddEdit(frm) {

把:

var frm = document.getElementById('selectdoctype');

含义:

function valdocAddEdit(frm) {
  var frm = document.getElementById('selectdoctype');
  .........
}

现在frm.submit();不应抱怨。

答案 2 :(得分:0)

您首先正确指定表单,但不是最佳实践。 基本上,表单有一个有趣的命名提交来触发请求基于它的动作,但在你的代码中,表单也有一个属性提交来映射输入值。所以将提交btn'name更改为其他东西,它将是工作!