主にバーコードでスキャンしたデータを入力するために、約 30 個のテキスト ボックスを配置する必要がある WebForm があります。最初のテキスト ボックスのみを表示し、前のテキスト ボックスにテキストが入力されている場合にのみ、次のテキスト ボックスを表示したいと考えています。選択した変更のテキストボックスで「If」条件も使用しようとしましたが、機能しません。解決策はありますか?
6 に答える
これらのテキスト ボックスには、「textbox1」、「textbox2」、「textbox3」のような名前を付けて、現在のテキスト ボックスのインデックスを簡単に見つけられるようにします。次に、KeyDown イベントを使用して、表示されるものと表示されないものを制御できます。これは実用的な例ではありませんが、良い方向性を示すはずです。
int currentIndex = 1;
private void TextBox1_KeyDown(object sender, KeyEventArgs e)
{
TextBox t = Controls["TextBox" + (currentIndex + 1).ToString()] as TextBox;
t.Visible = true;
currentIndex +=1;
}
Jquery で問題を解決できます。私は 4 つのテキスト ボックスを取るサンプル コードを作成しました。最初は最初のテキスト ボックスのみが Web フォームに表示されます。ユーザーが最初の TextBox に値を入力すると、次のテキスト ボックスが表示されない場合、前のテキスト ボックスに値がある場合、次のテキスト ボックスが自動的に表示されます。
サンプルコードを以下に示します。
<input type="text" />
<input type="text" />
<input type="text" />
<input type="text" />
$('input:text:not(:eq(0))').hide()
$('input').on("change paste keyup", function () {
if ($(this).val().length > 0) {
$(this).next().show();
}
else
{
$(this).next().hide();
}
});
同じサンプル アプリケーションを作成しました。デモについては、指定されたリンクをクリックしてください。
クライアント側のコードであるため、サーバー側よりもパフォーマンスが非常に高速です。
あなたの問題が私のアイデアによって解決されたと感じたら、私に投票してください。
これにはjava-scriptを使用する必要があります。これにサーバー側関数を使用すると、サーバーに何度もアクセスするため、アプリケーションのパフォーマンスも低下します。
したがって、1 つの引数を受け入れる Java スクリプト関数を作成します。この引数は、次のテキスト ボックス ID (表示したいテキスト ボックス) を取ります。この JavaScript 関数を次のように呼び出します:- onkeyup="calgrid(this,"TextBox2");" TextBox2 の代わりに nexttextbox id を渡します...
<script type="text/javascript" language="javascript">
function calgrid(firsttextbox,nexttextbox)
{
var id=firsttextbox.id;
var lastindex= id.lastIndexOf("_");
var strclnt=id.slice(0,lastindex+1);
var txtboxvalue=document.getElementById(firsttextbox).value;
if(txtboxvalue!="")
{
document.getElementById(strclnt+nexttextbox).style.visibility='visible';
}
else
{
document.getElementById(strclnt+nexttextbox).style.display = "none";
}
}
</script>
注:- textbox プロパティから visible=false を実行する場合、javascript から visible=true を実行することはできません。したがって、すべてのテキストボックスのスタイルを設定する style="display:none"
このコードを試してください
最初のテキストボックスはデフォルトで表示されるため、最初に flag=1 を設定します
private void visibleTextBox(Control c) { int フラグ = 1;
foreach (Control c1 in c.Controls) { if (c1.GetType() == typeof(TextBox)) { if (flag == 1) { ((TextBox)c1).Visible = true; } else { ((TextBox)c1).Visible = false; } if (((TextBox)c1).Text != "") { flag = 1; } else { flag = 0; } } } }
最初のテキストボックスでKeydownイベントを使用できます