我真的不明白为什么这对我这么难以开始工作:
它最终将进入ASP.NET控件,所以我相信我需要传递Javascript <textarea>
控件的ID。
它不起作用。
所以,在jsFiddle中,我尝试使用First和Last名称的标准控件,但它们也不起作用。
修改
我一直在玩jsFiddle,似乎我的jsOnFocus
从未被调用过(警报永远不会被激活)。但是,我能够从其他人那里运行一个小脚本,使多行文本框清晰并重置 - 我似乎无法找到一种方法从javascript函数调用它:
function jsOnFocus(obj) {
alert("Inside the jsOnFocus.");
if (obj.Value==obj.defaultValue)
obj.Value="";
}
function jsOnBlur(obj) {
if (obj.Value==="")
obj.Value=obj.defaultValue;
}
这是HTML。
<table>
<tr><td>Message:</td><td> </td></tr>
<tr>
<td> </td>
<td>
<textarea name="txtMsg" rows="6" cols="30"
onfocus="if(this.value==this.defaultValue)this.value='';"
onblur="if(this.value==='')this.value=this.defaultValue;">[Write your message here or call my voice number at (555) 222-1234.]</textarea>
</td>
</tr>
<tr>
<td>Test1:</td>
<td><input type="text" name="txtTest1"
onfocus="jsOnFocus(txtTest1)"
onblur="jsOnBlur(txtTest1)" value="Test1" /></td>
</tr>
<tr>
<td>Test2:</td>
<td><input type="text" name="txtTest2"
onfocus="if(this.value=='Test2'){this.value=''};" value="Test2" /></td>
</tr>
<tr>
<td>Test3:</td>
<td><input type="text" name="txtTest3"
onfocus="if(this.value==this.defaultValue)this.value='';"
onblur="if(this.value==='')this.value=this.defaultValue;" value="Test3" /></td>
</tr>
</table>
“消息”有效,但我想让代码在javascript中运行,我可以放在我的“js”文件中并用于其他对象。
“Test1”是尝试调用javascript,但它不起作用。
“Test2”有效,但不使用“消息”中的技术。
“Test3”工作, 使用“消息”中的技术。
有没有人看到如何使这个代码在javascript而不是内联html中运行?
jsFiddle链接:http://jsfiddle.net/jp2code/qCExy/10/
答案 0 :(得分:1)
代码背后:
string strUserName = "User Name";
string strPassword = "Password";
txtUserName.Text = strUserName;
txtPassword.Text = strPassword;
txtPassword.Attributes.Add("onblur", "PasswordBlur(this, '" + strPassword + "');");
txtUserName.Attributes.Add("onblur", "UserNameBlur(this, '" + strUserName + "');");
txtUserName.Attributes.Add("onfocus", "UserNameFocus(this, '" + strUserName + "');");
txtPassword.Attributes.Add("onfocus", "PasswordFocus(this, '" + strPassword + "');");
Java脚本:
function UserNameBlur(txtElem, strUserName) {
if (txtElem.value == '') txtElem.value = strUserName;
}
function PasswordBlur(txtElem, strPassword) {
if (txtElem.value == '') txtElem.value = strPassword;
}
function UserNameFocus(txtElem, strUserName) {
if (txtElem.value == strUserName) txtElem.value = '';
}
function PasswordFocus(txtElem, strPassword) {
if (txtElem.value == strPassword) txtElem.value = '';
}
答案 1 :(得分:1)
我和你的小提琴玩了一下。我对jsfiddle来说是个新手,所以我不敢尝试保存我的更改。
无论如何,有一些事情会阻碍 Test1 框的工作。首先,小提琴中“JavaScript”块中的脚本会像这样添加到页面中(通过查看结果部分中的源来检查):
<script type='text/javascript'>//<![CDATA[
window.addEvent('load', function() {
function jsOnFocus(obj) {
alert("Inside the jsOnFocus.");
if (obj.Value==obj.defaultValue)
obj.Value="";
}
function jsOnBlur(obj) {
if (obj.Value==="")
obj.Value=obj.defaultValue;
}
});//]]>
</script>
因此,您的功能不在范围(缺少更精确的术语),您可以按照自己的意愿调用它们。
为了解决这个问题,我将脚本直接添加到Html部分作为<script>
块。
javascript代码本身也存在一个小问题。 值属性称为value
,而不是Value
。
此外,我更改了输入上的onfocus
和onblur
属性,以便将this
传递给函数。您当然可以将其更改为传递id,如果需要,然后使用id查找控件。在这种情况下,请确保控件具有指定的ID。
无论如何,这里是来自小提琴的Html部分的结果代码:
<script type="text/jscript">
function jsOnFocus(obj) {
if (obj.value==obj.defaultValue)
obj.value="";
}
function jsOnBlur(obj) {
if (obj.value==="")
obj.value=obj.defaultValue;
}
</script>
<table>
<tr><td>Message:</td><td> </td></tr>
<tr>
<td> </td>
<td>
<textarea name="txtMsg" rows="6" cols="30" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value==='')this.value=this.defaultValue;">[Write your message here or call my voice number at (555) 222-1234.]</textarea>
</td>
</tr>
<tr>
<td>Test1:</td>
<td><input type="text" name="txtTest1" onfocus="jsOnFocus(this)" onblur="jsOnBlur(this)" value="Test1" /></td>
</tr>
<tr>
<td>Test2:</td>
<td><input type="text" name="txtTest2" onfocus="if(this.value=='Test2'){this.value=''};" value="Test2" /></td>
</tr>
<tr>
<td>Test3:</td>
<td><input type="text" name="txtTest3" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value==='')this.value=this.defaultValue;" value="Test3" /></td>
</tr>
</table>