1

基本的に、選択に基づいてフォーム内の要素を変更する必要があります (おそらくラジオ ボタン)。そのため、1 ページで 2 つのフォームを使用できる可能性があります。

これまでのところ、私はこれを考え出しましたが、うまくいかないようです...

//javascript

function FormChange(toChange){
    if (toChange){
        var oldHTML = document.getElementById('li1').innerHTML;
        var newHTML = "Company Name: " + "<input type="text" name="companyname" />";
        document.getElementById('li1').innerHTML = newHTML;
}

//HTML

<form action="insert.php" method="post">
<li id="li1">Firstname: <input type="text" name="firstname" />
</form>

<input type = "button" value="Change that bad boy" onclick="FormChange(true)"/>

私の意図は、firstname フィールドを削除して、companyname フィールドに置き換えることでした。

どんな助けでも大歓迎です、ありがとう。

4

6 に答える 6

1

現在の 2 つの回答をまとめて、エラー処理を少し追加します。

function FormChange(toChange) {
    if (toChange) {
        var elt = document.getElementById('li1');
        if (elt) {
            var newHTML = "Company Name: " + "<input type='text' name='companyname' />";
            elt.innerHTML = newHTML;
        }
    }
}


<form action="insert.php" method="post">
<ul>
<li id="li1">Firstname: <input type="text" name="firstname" /></li>
</ul>

于 2012-04-25T17:55:13.397 に答える
1
function FormChange(toChange){
    if (toChange){
        var oldHTML = document.getElementById('li1').innerHTML;
        var newHTML = "Company Name: " + "<input type='text' name='companyname' />";
        document.getElementById('li1').innerHTML = newHTML;
    }
}

デモ。

于 2012-04-25T17:56:14.353 に答える
0

テキストが"Firstname:"繰り返される場合にのみ変更を加えるためにいくつかの調整を行いました。呼び出しが不必要にDOMを混乱させないようにしました(パフォーマンスポイント9を参照) 。

JS:

function FormChange() {
    var obj = document.getElementById('li1');
    var oldHTML = obj.innerHTML.substring(0,10);

    if (oldHTML=="Firstname:") {
        var newHTML = "Company Name: <input type=\"text\" name=\"companyname\" />";
        obj.innerHTML = newHTML;
    }
}

HTML:

<form name="myForm" action="insert.php" method="post">
    <ul>
        <li id="li1">Firstname: <input name="firstname" type="text" /></li>
    </ul>
</form>
<input type="button" onclick="FormChange();" value="Change that bad boy" />

デモ

追記:

于 2012-04-25T18:03:48.170 に答える
0

innerHTML テキストの内側の二重引用符をエスケープしてみてください。

于 2012-04-25T17:48:35.910 に答える
0

{!を閉じるのを忘れました。

修理:

function FormChange(toChange) {
    if (toChange) {
        var oldHTML = document.getElementById('li1').innerHTML;
        var newHTML = "Company Name: " + "<input type="text" name="companyname" />";
        document.getElementById('li1').innerHTML = newHTML;
    } // <-- this was missing!
}
于 2012-04-25T17:48:46.087 に答える
0

なぜjqueryを使わないのですか???、次のようにしてください:

$("#li1").change(function(){
alert("it changed");//here do whatever you want to
});

その方が簡単で読みやすいと思います (Jquery ライブラリをインポートすることを忘れないでください)。

于 2012-04-25T17:54:24.243 に答える