【问题标题】:Change the text of textbox through javascript/jquery通过 javascript/jquery 更改文本框的文本
【发布时间】:2014-12-08 16:48:40
【问题描述】:

我想通过javascript更改文本框的值。

我有一个用户控件,我从中调用一个 js 文件。用户控件中有一个文本框,然后在 js 文件中我传递了该文本框值。单击按钮(它在用户控制中)后,js文件会执行一些操作。单击按钮并操作结束后,我想更改文本框的值。

User control

a textbox and a button

 string submitArgs = String.Format("'{0}',tboxTimeMeasured.ClientID);
  JsSubmitValues.Value = "javascript:SubmitMeasure(" + submitArgs + ");";     


Js File: 
    function SubmitMeasure(control_TimeMeasured) {
//some operations
//and success= true        

if (success) {
            alert("Your changes have been saved successfully!");
            var datetimeNow = new Date();
            control_TimeMeasured.value = datetimeNow.getHours() + ":" + datetimeNow.getMinutes(); 
        }
    }

在这里,它进入成功循环,control_TimeMeasured 是文本框的值,它从用户控件传递到“js”文件。如何更改 control_TimeMeasured 的值??

【问题讨论】:

  • 不清楚你在问什么。也许您可以尝试准确解释您所看到的问题的症状是什么。可以用浏览器开发工具调试control_TimeMeasured是什么吗?
  • @SamGreenhalgh 我编辑了它

标签: javascript c# jquery asp.net


【解决方案1】:

如果control_TimeMeasured 是在服务器端呈现的 ASP.NET 文本框,则它的运行时 ID 可能与您指定的不同。您可以使用 <%= control_TimeMeasured.ClientID %> 语法来获取其运行时 ID。您还希望在更改其属性之前选择控件(使用其 ID);你必须做的不仅仅是通过它的名字来引用它。试试这个:

document.getElementById("<%= control_TimeMeasured.ClientID %>").value = 
       datetimeNow.getHours() + ":" + datetimeNow.getMinutes();

或者,如果你有jQuery,你可以这样做:

$("#<%= control_TimeMeasured.ClientID %>")[0].value =
       datetimeNow.getHours() + ":" + datetimeNow.getMinutes();

现在如果control_TimeMeasured 只是一个普通的input 元素,你可以简单地这样做:

document.getElementById("control_TimeMeasured").value = 
           datetimeNow.getHours() + ":" + datetimeNow.getMinutes();

【讨论】:

  • 我尝试了前 2 个选项: Erron 1st: Unable to set property 'value' of undefined or null reference Erron 2nd: 语法错误,无法识别的表达式:# I cahnged第二个值 $("#" + control_TimeMeasured.ClientID)[0].value = 'hi';然后它给出第一个错误
  • 我认为没有属性作为值,它是valueof。
  • 您的页面上是否有 ID 设置为 control_TimeMeasured 的控件?你能发布control_TimeMeasured的确切值吗?
  • 但是从用户控件传递给js文件的值在control_TimeMeasured中
【解决方案2】:

在您的示例中,control_TimeMeasured 将是一个字符串。要在 javascript 中使用它,您需要使用 id 来查找这样的元素。

更新:

var element = document.getElementById(control_TimeMeasured);
if(element){
    if(element.tagName.toUpperCase() == 'INPUT'){
        var datetimeNow = new Date();
        element.value = datetimeNow.getHours() + ":" + datetimeNow.getMinutes();
    }else{
        console.error('element is not an input. Element is \'' + element.tagName + '\'.');
    }
}else{
    console.error('element with id\'' + control_TimeMeasured + '\' was not found.');
}

【讨论】:

  • 收到错误:无法设置未定义或空引用的属性“值”
  • 我认为没有属性作为值,它是valueof。
  • 在这种情况下,我想页面上没有具有该 ID 的元素。我已经更新了示例以帮助您进行调试。如果未找到该元素,则 javascript 会将 id 记录到控制台。然后您将能够看到 ID 是什么以及它是否与输入标签中的 id 匹配。
  • @user1989 value 是 HTML 输入元素的属性 - developer.mozilla.org/en/docs/Web/API/…
  • 它不会进入 else 循环。所以元素中会有一些东西。但是当我写“元素”并尝试智能感知时,它给了我 valueof 而不是 value 的选项
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多