0

いくつかのコントロール ID をコード ビハインドから html に渡そうとしていますが、コントロール名は動的に作成されるため事前にわからないため、次のようなものを使用できません。MyTextBox = document.getElementById("<%= TextBox1.ClientID %>");

次のコードを機能させるにはどうすればよいですか (可能であれば):

            TextBox test = ((TextBox)e.Row.Cells[7].Controls[0]);
            test.ID = "TextBox1";
            TextBox test2 = ((TextBox)e.Row.Cells[8].Controls[0]);
            test2.ID = "TextBox2";
            test.Attributes.Add("onChange", "javascript:MyFunc(TextBox1, TextBox2);");

JS 関数:

function MyFunc(TextBox1,TextBox2) {
            MyTextBox = document.getElementById("TextBox1");
            MyTextBox2 = document.getElementById("TextBox2");

            var splitDate = MyTextBox.value.split('/');
            var date = new Date(splitDate[2], splitDate[1] - 1, splitDate[0]);

            var day = date.getDate();
            var month = date.getMonth() + 1;
            var year = date.getFullYear() + 1;
            if (day < 10) {
                day = '0' + day;
            }
            if (month < 10) {
                month = '0' + month;
            }

            MyTextBox2.value = day + "/" + month + "/" + year;
        }
4

3 に答える 3

1

ID は変数であるため、""

var MyTextBox = document.getElementById(TextBox1);
var MyTextBox2 = document.getElementById(TextBox2);

また、変更する必要があります

test.Attributes.Add("onChange", "javascript:MyFunc('TextBox1', 'TextBox2');");

と の両方TextBox1TextBox2文字列として渡す必要があるため

于 2013-07-16T08:33:47.243 に答える
0
test.Attributes.Add("onChange", "javascript:MyFunc(" + TextBox1.ClientID + ", " + TextBox2.ClientID + ")");

役立つ場合はこれを試してください。

于 2013-07-16T08:47:39.410 に答える
0

このようにできると思いますが、

 TextBox test = ((TextBox)e.Row.Cells[7].Controls[0]);
            test.ID = "TextBox1";
            test.Attributes.Add('class','TextBox1');
            TextBox test2 = ((TextBox)e.Row.Cells[8].Controls[0]);
            test2.ID = "TextBox2";
            test.Attributes.Add('class','TextBox2');
            test.Attributes.Add("onChange", "javascript:MyFunc(TextBox1, TextBox2);");

JSで:

function MyFunc(TextBox1,TextBox2) {
            MyTextBox = document.getElementByClass("TextBox1");
            MyTextBox2 = document.getElementByClass("TextBox2");

            var splitDate = MyTextBox.value.split('/');
            var date = new Date(splitDate[2], splitDate[1] - 1, splitDate[0]);

            var day = date.getDate();
            var month = date.getMonth() + 1;
            var year = date.getFullYear() + 1;
            if (day < 10) {
                day = '0' + day;
            }
            if (month < 10) {
                month = '0' + month;
            }

            MyTextBox2.value = day + "/" + month + "/" + year;
        }
于 2013-07-16T08:39:31.157 に答える