3

我有一个放在 document.ready 中的函数,该函数是从特定按钮的 onclick 调用的。单击按钮时没有任何反应。

$(document).ready(function() 
{
    function myFunctionDelete()
    {
        alert("Delete Clicked.");
    }
}

这是链接到该按钮的相应 HTML。

<form action="edit.php" method="POST">
    <table>
    <tr id="formTitle" name="formTitle"><strong>Edit Event Now</strong></tr>
    <input type="hidden" id="deletedHidden" name="deletedHidden" value="" />
    <input type="hidden" id="dateForm2" name="dateForm2" value="" />
    <input type="hidden" id="titleEditOld" name="titleEditOld" value="" />
    <tr id="formTitle"><td><label id="titleLabel" for="Title"><strong>Title:</strong></label><input id="titleEdit" name="titleEdit" type="text" value="Event Title">
    <tr id="formTitle"><td><label for="startTimeHours"><strong>Time:</strong></label><select id="startHours" name="startHours"><option>--</option>                                                                                        <option>12</option>                                                                                         <option>1</option><option>2</option>                                                                                        <option>3</option><option>4</option>
                                                                                          <option>5</option><option>6</option>
                                                                                          <option>7</option><option>8</option>
                                                                                          <option>9</option><option>10</option>
                                                                                          <option>11</option></select>
    <select id="startMinutes" name="startMinutes"><option>--</option>                                                                                         <option>00</option>
                                                                                          <option>05</option><option>10</option>
                                                                                          <option>15</option><option>20</option>
                                                                                          <option>25</option><option>30</option>
                                                                                          <option>35</option><option>40</option>
                                                                                          <option>45</option><option>50</option>
                                                                                          <option>55</option></select>

    <input type="radio" name="AMPM" value="am">am
    <input type="radio" name="AMPM" value="pm">pm<br>
    <p><strong>All Day Event?</strong>
    <input type="checkbox" name="AllDay" value="true"></p>                                                                
    <tr id=formTitle"><td><input id="submit" type="submit" value="Submit">
    <button type="button" onclick="myFunctionDelete()">Delete Event</button>
    </table>
4

2 回答 2

6

问题是您的myFunctionDelete函数无法全局访问,因为它是ready在文档的事件中定义的。您需要将该函数移出事件处理程序。换句话说,改变:

$(document).ready(function() 
{
    function myFunctionDelete()
    {
        alert("Delete Clicked.");
    }
}

至:

$(document).ready(function()
{
   // Any code that should be run when the DOM is ready
});

// This is now a global function
function myFunctionDelete()
{
   alert("Delete Clicked.");
}
于 2013-06-04T15:58:16.483 回答
4

您在这里所做的是从您指定的函数内部定义一个函数,该函数将作为document.ready. 这意味着您的myFunctionDelete函数的范围将限制在该document.ready函数的范围内,并且任何其他 Javascript 例程都将无法访问它。

您只需要在事件处理程序中放置一次性初始化逻辑document.ready,而不是所有代码都需要放到那里,特别是如果您只是使用 HTMLonclick="..."属性。

此外,您在事件处理程序);的末尾缺少 a 。document.ready

尝试这个:

$(document).ready(function() 
{

});

function myFunctionDelete()
{
    alert("Delete Clicked.");
}

或者放弃onclick并使用这个:

<button id="deleteButton">Delete Event</button>

有了这个:

$(document).ready(function() 
{
    $('#deleteButton').click(function()
    {
        alert("Delete Clicked.");
    });
});
于 2013-06-04T15:59:34.547 回答