0

以下のこのコードによると、ユーザーがチェックボックスをオンにすると、日付がcDateというテキストボックスコントロールに自動的に挿入されます。これはうまく機能します:

function ClickBox(cb) { 
    var tr = cb; 
    while (tr.tagName != "TR") { 
        tr = tr.parentNode; 
        if (tr == null) return; // something went wrong 
    } 
    var inps = tr.getElementsByTagName("input"); 
    for (var i = 0; i < inps.length; ++i) { 
        var inp = inps[i]; 
        if (inp.name.indexOf("cDate") >= 0) { 
            inp.value = rightDate(); 
            break; 
        } 
    } 
}

影響を受けるコントロールは次のとおりです。

    <ItemTemplate> 
     <asp:CheckBox ID="myrecord" runat="server" onclick="ClickBox(this)" /> 
    </ItemTemplate>  

   <ItemTemplate> 
    <asp:TextBox runat="server" style="border: none;" ID="cDate"></asp:TextBox> 
   </ItemTemplate>

ユーザーが現在抱えている問題は、チェックボックスがオンになって日付が挿入されたら、挿入された日付を削除する唯一の方法は[リセット]ボタンをクリックすることです。

チェックボックスがオフになったら、挿入された日付を非表示にすることをお勧めします。

以下のこの変更されたコードは機能していません。エラーは発生しませんが、チェックボックスをオンにしたりオフにしたりしても、何も起こりません。日付が挿入されなくなります。

function ClickBox(cb) { 
        var tr = cb;
        var inps = tr.getElementsByTagName("input"); 
        if(cb.checked == 1){ // CheckBox checked condition 

                while (tr.tagName != "TR") { 
                        tr = tr.parentNode; 
                        if (tr == null) return; // something went wrong 
                } 
                for (var i = 0; i < inps.length; ++i) { 
                        var inp = inps[i]; 
                        if (inp.name.indexOf("cDate") >= 0) { 
                                inp.value = rightDate(); 
                                break; 
                        } 
                } 
        } 
        else{ 
                for (var i = 0; i < inps.length; ++i) { 
                        var inp = inps[i]; 
                        inp.value = ''; 
                } 
        } 
}

何が間違っているのかわかりません。

ご協力いただきありがとうございます。

4

1 に答える 1

0

これは私にとってうまくいく非常に簡単な解決策です:

ASP.NET マークアップ:

<div>
  <asp:CheckBox ID="cbDate" runat="server" onclick="ClickBox(this)" />
  <br />
  <asp:TextBox ID="txtDate" runat="server"></asp:TextBox>
</div>

JavaScript:

function ClickBox(checkbox) {
  var dateCheckbox = checkbox;
  var dateTextBox = document.getElementById("txtDate");

  if (dateCheckbox.checked === true) {
    dateTextBox.value = "TODAY";
  } else {
    dateTextBox.value = "";
  }
}

お役に立てれば。

于 2012-09-12T18:36:40.273 に答える