如何使用asp.net将值传递给外部javascript文件

时间:2014-06-30 12:22:37

标签: javascript asp.net

我正在通过外部javascript文件在asp.net中进行验证。如何将值传递给外部javascript文件中的函数?

我的asp代码是:

<asp:TextBox runat="server" ID="txtInput"></asp:TextBox> 
<asp:Button runat="server" 
    OnClientClick="javascript:phonenumber(document.getElementByID('<%txtInput.text %>'))" 
    Text="Click"/>        

当我点击此按钮时,它应该显示警告消息,但它没有。请告诉我我做错了什么。

我的Javascript代码是:

function phonenumber(inputtxt)  
{  
    var phoneno = /^\d{10}$/;  
    if(inputtxt.value.match(phoneno))  
    {  
        return true;  
    }  
    else  
    {  
        alert("Not a valid Phone Number");  
        return false;  
    }  
}

2 个答案:

答案 0 :(得分:1)

另一个选项:将文本框ClientIDMode设置为Static,只需通过ID将输入字段引用为txtInput,这样就可以避免名称错位并使输入字段更加JS友好,这样:

<asp:TextBox runat="server" ID="txtInput" ClientIDMode="Static"></asp:TextBox> 
<asp:Button runat="server" OnClientClick="phonenumber()" Text="Click"/>

呈现为:(注意文本输入上的id)

<input name="ctl00$ctl00$MainContent$txtInput" type="text" id="txtInput">
<input type="submit" name="ctl00$ctl00$MainContent$Button1" value="Click" onclick="phonenumber();" id="MainContent_Button1">

另请注意,该按钮呈现为提交类型,无论如何都会强制回发。 yiou可能只想使用普通<button> html标记和普通onclick='phonenumber()'来避免回发,因为即使您选择使用属性<asp:Button>呈现UseSubmitBehavior="False",它仍会注入您的OnClientClick代码后面的回发。

JS:

function phonenumber()  
{  
    var phoneNumText = document.getElementById('txtInput');
    var phoneno = /^\d{10}$/;  
    if(phoneNumText.value.match(phoneno))  
        return true;  
    else  
    {  
        alert("Not a valid Phone Number");  
        return false;  
    }  
}

答案 1 :(得分:0)

这里有几个问题。首先要记住,<%= txtInput.text %>将产生一个看起来像javascript:phonenumber()的输出,因为文本框可能在呈现页面时没有值。即使用户更改了文本框,也不会在该函数调用中反映出来。

其次,您不需要javascript:部分。如前所述,它区分大小写。第三,正则表达式的JavaScript代码缺少一些括号。

尝试这样的事情:

function ValidatePhone(element){             var el = document.getElementById(element);

        var phoneno = "/^\d{10}$/";
        if (el.value.match(phoneno)) {
            alert("Valid");
            return true;
        } else {
            alert("Not a valid Phone Number");
            return false;
        }
    }

        

        <asp:TextBox runat="server" ID="txtInput" ClientIDMode="Static" />
        <asp:Button runat="server" OnClientClick="ValidatePhone('txtInput');" Text="Test" />
    </div>
</form>

注意:我没有测试你的正则表达式函数。