【问题标题】:JQuery Dialog: Get value from textbox in dialog not working gets old valueJQuery对话框:从对话框中的文本框中获取值不起作用获取旧值
【发布时间】:2011-06-14 14:49:15
【问题描述】:

我有一个 JQuery 对话框,里面有一个包含文本框的控件,里面还有一个保存按钮。 在保存单击时,我从文本框中获取值并将其传递给函数。

问题:

每次我更改文本框中的值时,它只会获取旧值,

所以,如果原来的值是2,我把它改成20,我点击按钮,它得到值2。

有人知道为什么会这样吗?

谢谢!

这里有一些代码:

查询:

  $("#inputupdatecontrol<%=PlantID %>").dialog({
            autoOpen: false,
        modal: true,
        width: 500,
        height: 400
    });

HTML:

<script type="text/javascript">
function SaveActivityManagementData() {

    var plantid = $('.drpplants').val();
    var worktype = $('.worktype').val();

    var startdate = $('.startdate').val();

    var enddate = $('.enddate').val();
    var planid = $('.planid').val();
    var mob = $('.mob').val();

    var assignedto = $("input[name=txtassignedtoid]").attr("value");
    var currentuserId = $("input[name=CurrentUserId]").attr("value");
    var clientId = $("input[name=ClientId]").attr("value");


    AjaxSaveActivityManagementData(plantid, worktype, startdate, enddate, planid, mob, assignedto, currentuserId,clientId);
    }

</script>


<table>
<tr>
    <td>Plant:</td>
    <td><asp:DropDownList ID="drpPlants" runat="server" DataValueField="Id" DataTextField="Name" CssClass="drpplants"></asp:DropDownList></td>
</tr>

<tr>
    <td>Work Order:</td>
    <td>
        <div>
            <asp:Label ID="lblExisiting" runat="server" Text="Existing"></asp:Label>
            <asp:RadioButton runat="server" GroupName="workorder" ID="rbExisting" Checked="true" />
            <asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>
        </div>
        <div>
            <asp:Label ID="Label1" runat="server" Text="New"></asp:Label>
            <asp:RadioButton ID="rbNew" runat="server" GroupName="workorder" />
            <asp:TextBox ID="txtnew" runat="server"></asp:TextBox>
        </div>
    </td>
</tr>

<tr>
    <td>Work Type:</td>
    <td>
        <asp:DropDownList ID="DropDownList2" runat="server" CssClass="worktype">
            <asp:ListItem Text="non-routine"></asp:ListItem> 
            <asp:ListItem Text="pilot project"></asp:ListItem> 
            <asp:ListItem Text="routine"></asp:ListItem> 
        </asp:DropDownList>
   </td>
</tr>

<tr>
    <td>Description:</td>
    <td><asp:TextBox ID="txtDesc" runat="server"></asp:TextBox></td>
</tr>

<tr>
    <td>Start Date:</td>
    <td><asp:TextBox ID="txtStartDate" runat="server" CssClass="startdate"></asp:TextBox></td>
</tr>

<tr>
    <td>End Date:</td>
    <td><asp:TextBox ID="txtEndDate" runat="server" CssClass="enddate"></asp:TextBox></td>
</tr>

<tr>
    <td>Plan ID:</td>
    <td><asp:TextBox ID="txtPlanId" runat="server" CssClass="planid"></asp:TextBox></td>
</tr>

   <tr>
    <td>MOB:</td>
    <td><asp:TextBox ID="txtMOB" runat="server" CssClass="mob"></asp:TextBox></td>
</tr>

<tr>
    <td>Assigned To:</td>
    <td>
        <asp:TextBox ID="txtAssignedTo" runat="server" CssClass="assignedto"></asp:TextBox>
        <input type="text" name="txtassignedtoid" visible="false" class="assignedtoid" style="display:none;" />            
        <input type="text" name="CurrentUserId" visible="false" class="userid" style="display:none;"  />                  
        <input type="text" name="ClientId" visible="false" class="clientid" style="display:none;"  />                 
    </td>
</tr>

<tr>
    <td></td>
    <td><asp:CheckBox runat="server" ID="chkOverRide" Text="Override" /></td>
</tr>

<tr>
    <td></td>
    <td><asp:DropDownList ID="drpAssignment" runat="server" DataTextField="FirstName" DataValueField="id"></asp:DropDownList></td>
</tr>

<tfoot>
    <tr>
        <td></td>
        <td>
            <asp:Button ID="btnSave" runat="server" Text="Save" OnClientClick="SaveActivityManagementData();"/>
            <asp:Button ID="btnDelete" runat="server" Text="Delete" OnClick="DeleteClick" />
            <asp:Button ID="btnCancel" CssClass="btnFormCancel" runat="server" Text="Cancel" />
        </td>
    </tr>
</tfoot>

【问题讨论】:

    标签: jquery jquery-ui dialog


    【解决方案1】:

    我以前经历过这种情况——不是使用 jQuery,而是使用 YUI。我相信.val() 方法很容易在更改事件传播之前返回值before - 而直接访问底层DOM 元素的值应该可以工作。所以而不是:

    var plantid = $('.drpplants').val();
    

    你会有类似的东西:

    var plantid = $('.drpplants').get(0).value;
    

    您可能需要更正第二种语法 - 我不确定这是在 jQuery 中访问底层 DOM 节点的最佳方式...

    【讨论】:

    • 谢谢!这适用于将 0 更改为 1! $('.drpplants').get(1).value;
    猜你喜欢
    • 1970-01-01
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多