0

私は私のページで私のjavascriptを次のように参照しました

<script src="JScript1.js" type="text/javascript"></script>

これらは、そのスクリプトファイル内の私の関数です

function multiplication(txtQuantity) {
var weight = document.getElementById(txtQuantity).value;
}
 function f(sender, args) {
args.IsValid = false;
var gridview = document.getElementById("<%=Gridview1.ClientID%>");
var txt = gridview.getElementsByTagName("textarea");
for (i = 0; i < txt.length; i++) {

    if (txt[i].id.indexOf("TextBox1") != -1) {

        if (txt[i].value == '') {
            args.IsValid = false;
        }
        else {
            args.IsValid = true;
        }

    }
}
}

function f1(sender, args) {
args.IsValid = false;
var gridview = document.getElementById("<%=Gridview1.ClientID%>");
var txt = gridview.getElementsByTagName("textarea");
for (i = 0; i < txt.length; i++) {

    if (txt[i].id.indexOf("TextBox2") != -1) {

        if (txt[i].value == '') {
            args.IsValid = false;
        }
        else {
            args.IsValid = true;
        }

    }
}
 }

コードビハインドからこれらの関数を呼び出し、カスタムバリデーターに関数を割り当てたい

次のように試しましたが、うまくいきませんでした

<asp:CustomValidator ID="custValCountry" runat="server" ValidationGroup="Country"
                        ValidateEmptyText="true" ControlToValidate="TextBox1" ClientValidationFunction="javascript:f"
                        ErrorMessage="Other is required"></asp:CustomValidator>

また、私のRowDataBoundイベントの下で私は次のように書いていますこれも機能していません

protected void Gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            TextBox txt = (TextBox)e.Row.FindControl("TextBox1");
            Page.ClientScript.RegisterClientScriptBlock(txt.GetType(), "onBlur", "multiplication('" + txt.ClientID + "')");
            //Page.ClientScript.RegisterClientScriptBlock(, "Script", "alert('Records Successfuly Saved!');", true);
           // txt.Attributes.Add("onBlur", "return javascript:multiplication('" + txt.ClientID + "');");
            //TextBox txt1 = (TextBox)e.Row.FindControl("TextBox2");
            txt1.Attributes.Add("onBlur", "return javascript:multiplication('" + txt1.ClientID + "');");
        }
    }

誰かが私を助けることができますか

4

2 に答える 2

2

通常、静的 JavaScript ファイルは ASP.NET を介してフィードされないため、次の行は機能しません。

var gridview = document.getElementById("<%=Gridview1.ClientID%>");

グリッドに固定 ID を使用し、それを直接指定します。

var gridview = document.getElementById('my-grid');

<asp:GridView ID="my-grid" ClientIDMode="Static" runat="server" ...>

または、ID を見つける別の方法を考えてください。

また、この関数はほとんど役に立たないことに注意してください。

function multiplication(txtQuantity) {
var weight = document.getElementById(txtQuantity).value;
}

あなたは体重を得て、それで何もしませんか?

于 2012-11-14T11:27:33.560 に答える
0

javascript関数は、コードビハインドが実行されているサーバーではなく、クライアントのブラウザーで実行されていることを理解する必要があります。コードビハインドから関数を呼び出す必要がある場合は、コードビハインドで同等の関数を作成する必要があります。

于 2012-11-14T11:29:58.143 に答える