单击按钮时功能未定义

function undefined on button click

本文关键字:未定义 功能 按钮 单击      更新时间:2023-09-26

我有一个表单,应该通过ajax提交时,提交按钮被点击,但我得到函数未定义。该表单是在一个div得到加载到主页,所以我已经把标签下的表单,以确保表单加载之前的脚本。读了一些其他的解决方案,我已经尝试添加窗口。NewSearchFunction而不是NewSearchFunction,但它仍然不起作用。

我的形式:

<form class="inline" name="Form1">
    <input class="inline" name="employeeid" id="employeeid" type="hidden" size="30" autofocus value="<?php echo $employee[$k]["employeeid"]; ?>" />
    //More Fields Here
    <p class="inline">
        <label class="inline" for="pensioncompany">Company Pension:</label>
        <input class="inline" type="text" id="pensioncompany" name="pensioncompany" size="30" value="<?php echo $employee[$k]["pensioncompany"]; ?>" />
    </p>
    <input id="submit" type="submit" onclick="NewSearchFunction(e)" value="Update Details">
    </td></tr></table></td></tr></table>
</form>
<script src="editemployeedetailsajax.js"></script>

editemployeedetailsajax.js:

// JavaScript Document
var NewSearchFunction;
$(document).ready(function(){
    var window.NewSearchFunction;
    NewSearchFunction(e) = function() {
        e.preventDefault()
        console.log()
        var employeeid=document.getElementById("employeeid").value;
        var firstname=document.getElementById("firstname").value;
        var surname=document.getElementById("lastname").value;
        var addr1=document.getElementById("addr1").value;
        var addr2=document.getElementById("addr2").value;
        var town=document.getElementById("town").value;
        var county=document.getElementById("county").value;
        var postcode=document.getElementById("postcode").value;
        var tel1=document.getElementById("tel1").value;
        var work=document.getElementById("work").value;
        var mobile=document.getElementById("mobile").value;
        var sex=document.getElementById("sex").value;
        var DOB=document.getElementById("DOB").value;
        var ninumber=document.getElementById("ninumber").value;
        var payrollnumber=document.getElementById("payrollnumber").value;
        var sortcode=document.getElementById("sortcode").value;
        var accountnumber=document.getElementById("accountnumber").value;
        var annualleaveentitlement=document.getElementById("annualleaveentitlement").value;
        var vehicleid=document.getElementById("vehicleid").value;
        var fuelcardid=document.getElementById("fuelcardid").value;
        var mobileid=document.getElementById("mobileid").value;
        var pensionindividual=document.getElementById("pensionindividual").value;
        var pensioncompany=document.getElementById("pensioncompany").value;
        // Returns successful data submission message when the entered information is stored in database.
        var dataString = 'employeeid=' + employeeid + '&firstname=' + firstname + '&surname=' + lastname + '&addr1=' + addr1 + '&addr2=' + addr2 + '&town=' + town + '&county=' + county + '&postcode=' + postcode + '&tel1=' + tel1 + '&work=' + work + '&mobile=' + mobile + '&sex=' + sex + '&DOB=' + DOB + '&ninumber=' + ninumber + '&payrollnumber=' + payrollnumber + '&sortcode=' + sortcode + '&accountnumber=' + accountnumber + '&annualleaveentitlement=' + annualleaveentitlement + '&vehicleid=' + vehicleid + '&fuelcardid=' + fuelcardid + '&mobileid=' + mobileid + '&pensionindividual=' + pensionindividual + '&pensioncompany=' + pensioncompany;
        // AJAX code to submit form.
        $.ajax({
            type: "POST",
            url: "submit.php",
            data: dataString,
            cache: false,
            success: function(html) {
                alert(html);
            });
        );

就像Tushar指出的那样,您的NewSearchFunction(e)仅在DOM加载之后才定义,但是当DOM加载时,在输入元素中您有一个对NewSearchFunction的引用,该引用目前尚未定义。

更好的方法确实是使用jquery元素绑定:

$('input#submit').click(function(e) {
e.preventDefault()
    console.log()
    var employeeid=document.getElementById("employeeid").value;
    var firstname=document.getElementById("firstname").value;
    var surname=document.getElementById("lastname").value;
    var addr1=document.getElementById("addr1").value;
    var addr2=document.getElementById("addr2").value;
    var town=document.getElementById("town").value;
    var county=document.getElementById("county").value;
    var postcode=document.getElementById("postcode").value;
    var tel1=document.getElementById("tel1").value;
    var work=document.getElementById("work").value;
    var mobile=document.getElementById("mobile").value;
    var sex=document.getElementById("sex").value;
    var DOB=document.getElementById("DOB").value;
    var ninumber=document.getElementById("ninumber").value;
    var payrollnumber=document.getElementById("payrollnumber").value;
    var sortcode=document.getElementById("sortcode").value;
    var accountnumber=document.getElementById("accountnumber").value;
    var annualleaveentitlement=document.getElementById("annualleaveentitlement").value;
    var vehicleid=document.getElementById("vehicleid").value;
    var fuelcardid=document.getElementById("fuelcardid").value;
    var mobileid=document.getElementById("mobileid").value;
    var pensionindividual=document.getElementById("pensionindividual").value;
    var pensioncompany=document.getElementById("pensioncompany").value;
    // Returns successful data submission message when the entered information is stored in database.
    var dataString = 'employeeid=' + employeeid + '&firstname=' + firstname + '&surname=' + lastname + '&addr1=' + addr1 + '&addr2=' + addr2 + '&town=' + town + '&county=' + county + '&postcode=' + postcode + '&tel1=' + tel1 + '&work=' + work + '&mobile=' + mobile + '&sex=' + sex + '&DOB=' + DOB + '&ninumber=' + ninumber + '&payrollnumber=' + payrollnumber + '&sortcode=' + sortcode + '&accountnumber=' + accountnumber + '&annualleaveentitlement=' + annualleaveentitlement + '&vehicleid=' + vehicleid + '&fuelcardid=' + fuelcardid + '&mobileid=' + mobileid + '&pensionindividual=' + pensionindividual + '&pensioncompany=' + pensioncompany;
    // AJAX code to submit form.
    $.ajax({
        type: "POST",
        url: "submit.php",
        data: dataString,
        cache: false,
        success: function(html) {
            alert(html);
        });
    );
});

不要在按钮上放置onclick属性或在按钮上注册单击事件处理程序,您可以将按钮保留为type="submit",然后在表单上注册提交事件处理程序。你只需要在提交事件处理程序中调用event.preventDefault()来防止正常的表单提交,当然,你应该在文档准备处理程序中注册事件处理程序。

相关HTML:

<script src="editemployeedetailsajax.js"></script>
<form name="Form1">
    <input type="hidden" name="employeeid" value="..." />
    <input type="text" name="pensioncompany" value="..." />
    <input type="submit" value="Update Details" />
</form>

editemployeedetailsajax.js:

$(document).ready(function() {
    $('form[name=Form1]').submit(function(event) {
        event.preventDefault();
        $.ajax({
            type: "POST",
            url: "submit.php",
            data: $(this).serialize(),
            dataType: 'html',
            cache: false,
            success: function(html) {
               alert(html);
            }
        });
    });
});