【问题标题】:Jquery form submit of ASP.Net form : request(txtname) <> txtname.textASP.Net 表单的 Jquery 表单提交:request(txtname) <> txtname.text
【发布时间】:2023-03-11 09:04:01
【问题描述】:

我正在尝试做一些应该很简单的事情。我找到了shortcut.js 并使用它来满足请求。当他们按下/键入 CTL-S 时,我需要保存页面。正常的 odl school 同步调用就可以了。

[是的,CTL-S 通常会将 HTML 页面保存到文件中。]

首先我将解释这个问题,然后我将详细介绍。 这里是绑定快捷方式的js sn-p。只需调用按钮单击事件...

 shortcut.add("F11",  function(){
                      $('#ctl00$cp1$btnSave').click();
                         }
             );

在调用快捷方式时,会捕获击键并触发保存按钮。我后面的代码被调用。

似乎 HTTP 请求中的 FORM 值没有映射到控制变量。我可能说得不太对……考虑一下: 这里 ctl00$cp1$txtname 是 textBox 控件的 uniqueId。

request('ctl00$cp1$txtname') = "newValue"
txtname.text = "oldvalue"

如果我返回并单击鼠标按钮,相同的按钮,相同的表单......

request('ctl00$cp1$txtname') = "newValue"
txtname.text = "newvalue"

form.load 就是这种情况。因此,每当这种映射发生/未发生时,它都处于页面生命周期的早期。 这不是特定控件所独有的。所有控件都遇到相同的问题。

这是设计时的保存按钮

<asp:Button ID="btnSave" runat="server"
        Text="Save" class="submit" CssClass="buttonblue" UseSubmitBehavior="false" />

这是渲染时的样子

<input type="button" name="ctl00$cp1$btnSave" value="Save" onclick="javascript:__doPostBack('ctl00$cp1$btnSave','')" id="ctl00_cp1_btnSave" class="buttonblue">

我注意到在 DOM 级别的思考中,鼠标单击应该会触发 __doPostBack。不多也不少。所以我改变了快捷方式代码来做同样的事情

 shortcut.add("F11",  function(){
                      __doPostBack('ctl00$cp1$btnSave', '');
                         }
             );

这并不能解决问题。 同样,这是客户端的东西,没有什么真正棘手的事情。查看页面源代码显示 __doPostBack 是以这种方式呈现的

var theForm = document.forms['aspnetForm'];
if (!theForm) {
    theForm = document.aspnetForm;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}

虽然我在做,但我也在尝试

 shortcut.add("F11",  function(){
                      $('#aspnetForm').submit();
                         }
             );

这也不能解决问题。

我不想做任何聪明的事情,甚至是异步的,我只是想让表单通过 JS 提交。

我的主要问题是:为什么 asp.net 的行为不符合我的预期。 具体来说,为什么不将 request.form 值映射到控制变量。

我认为 a) 点击按钮 b) 调用 (#btn).click() c) 调用 __doPostback (与点击使用的参数完全相同)

会产生相同的结果。

这里有些东西我没听懂。

一个有趣的数据点是,我通过调用 ('#form').submit() 得到了相同的不需要的行为

【问题讨论】:

    标签: javascript jquery asp.net vb.net


    【解决方案1】:

    telerik radTextBox 控件以某种方式干扰了 asp.net 进程。通过用常规文本框替换它们,我能够获得所需的行为。

    这几周来一直是我的眼中钉。

    【讨论】:

      猜你喜欢
      • 2011-03-22
      • 1970-01-01
      • 2011-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多