0

Spry Validation (つまり JavaScript) を持つテキスト フィールドを持つフォームを作成しました。ユーザーはフォームの行数を 1 から 10 まで選択できます。拡張するには以下のコードが必要ですが、それを機能させるには JavaScript に精通していません。

$divkey は、フォーム内の行数を制御する変数です。

オリジナル

<script type="text/javascript">
var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1", "none", {validateOn:["change"], maxChars:20});
var sprytooltip1 = new Spry.Widget.Tooltip("sprytooltip1", "#sprytrigger1");
</script>

そのため、$divkey に基づいて「var sprytextfield1...」という行を繰り返す必要があり、次の行は「var sprytextfield2...」になります。誰かがこれを書き直して動作するようにしてもらえますか?

phpを使ってみる

<script type="text/javascript">
<?php   for ($i = 0; $i < $divkey; $i++) { $num=$i+1; ?>  
var sprytextfield<?php echo $num;?> = new Spry.Widget.ValidationTextField("sprytextfield<?php echo $num;?>", "none", {validateOn:["change"], maxChars:20});
<?php }?>
var sprytooltip1 = new Spry.Widget.Tooltip("sprytooltip1", "#sprytrigger1");
</script>

JavaScriptを使用しようとしています

<script type="text/javascript">
var numwrestler = <?php echo $wrestlerkey; ?>;
var sprytextfield = [];
for (var i = 0; i < numwrestler; i++) {
    var num = i+1;  
var sprytextfield[num] = new Spry.Widget.ValidationTextField("sprytextfield"+num, "none", {validateOn:["change"], maxChars:20});
}
var sprytooltip1 = new Spry.Widget.Tooltip("sprytooltip1", "#sprytrigger1");
</script>
4

2 に答える 2

1

このタイプのタスクには Javascript 配列を使用することをお勧めします。あなたのコードはほとんど正しいですが、varfor ループ内が正しくnumなく、単に使用する代わりに変数を作成するのiは冗長です。

<script type="text/javascript">
var sprytextfield = new Array();
var numwrestler = <?php echo $wrestlerkey; ?>;
for(var i = 0; i < numwrestler; i++){
    sprytextfield[i] = new Spry.Widget.ValidationTextField("sprytextfield"+(i+1), "none", {validateOn:["change"], maxChars:20});
}

var sprytooltip1 = new Spry.Widget.Tooltip("sprytooltip1", "#sprytrigger1");
</script>

スクリプトに PHP 変数を含める前に、ファイルで PHP 変数が定義されていることを確認してください。

于 2013-07-11T01:39:38.843 に答える
0

PHPコードでは、変数divkeyを定義することはありません。デフォルトでは、値は0になります。試してください:

<script type="text/javascript">
<?php  $divkey = 10; for ($i = 0; $i < $divkey; $i++) { $num=$i+1; ?>  
var sprytextfield<?php echo $num;?> = new Spry.Widget.ValidationTextField("sprytextfield<?php echo $num;?>", "none", {validateOn:["change"], maxChars:20});
<?php }?>
var sprytooltip1 = new Spry.Widget.Tooltip("sprytooltip1", "#sprytrigger1");
</script>

$numループのすべての繰り返しでインデックスとして使用している変数は、i++と のために 2 増加することに注意してください。$num=$i+1

于 2013-07-11T01:34:51.007 に答える