在表单标记中,Javascript按钮不起作用

时间:2014-03-19 21:25:20

标签: javascript php forms

当我在我的php文件中放置表单标签时,我的javascript函数addmore(索引)停止工作。我无法理解为什么?没有表单标签,它可以工作,但我没有提交按钮。

在我的HTML中有几个文字,我在哪里插入用户的问题

<textarea name"que[1]"></textarea>
<textarea name"que[2]"></textarea>
<textarea name"que[3]"></textarea>

我的PHP文件应该带有答案字母提出问题 - 然后用户提交

<?php
<form action="result.php" method="post">
$content = "";
$question = $_POST['que'];
$length = count($_POST['que']);

for($j=1; $j<$length+1; $j++) {

if($_POST['pitanje'][$j] != "") {
$area = '<textarea name="ans'.$j.'1"></textarea>';
$addmore = '<button type="button" name="addmore" onClick="addmore('.$j.');">Add more</button>';
$content .= $j.') '.$question[$j].'<br/>'.$area.'<br/><div id="inner'.$j.'"></div>'.$addmore.'<br/><br/>';}}

echo $content;
echo'<br/><input type="submit" value="CALCULATE"></form>';
?>

我的JAVASCRIPT文件用于增加更多答案字段的功能

var am = [];
for(var i=1; i<101; i++){
am[i] = 1;}

function addmore(index) {
        am[index]++;
        var textarea = document.createElement("textarea");
        textarea.name = "ans" + index + am[index];
        var div = document.createElement("div");
        div.innerHTML = textarea.outerHTML;
        document.getElementById("inner"+index).appendChild(div);
}

4 个答案:

答案 0 :(得分:0)

可能是按钮触发表单提交。试试这个:

onClick="return addmore('.$j.');">
.....
function addmore(index) {
....
return false;
}

答案 1 :(得分:0)

在我看来,错误是因为表单标签没有被回显或分配给变量。

答案 2 :(得分:0)

选项......

  • 更改button name
  • 更改function
  • 的名称
  • 删除name
  • 中的属性button
  • 使用<input type="button" />代替<button></button>
  • ...

......任何人都应该这样做。

<button name="buttonName" onclick="functionName()">addnew in html?</button>
<button name="buttonName" onclick="otherFunctionName()">addnew</button>
<button onclick="functionName()">addnew</button>

或只是

<input type="button" value="addnew" onclick="functionName()" />

查看 simplifyed JSFiddle example

答案 3 :(得分:-1)

我想奥斯汀是对的,我尝试使用表格外的按钮,然后就可以了。

如果你从这样的表格标签中移出按钮,它会起作用,你有一个&#34; addmore&#34;按钮在右上方,并在下面获得尽可能多的textareas(一个html页面在e jsfiddle或simmilar中说明):

<!DOCTYPE html>
<html>
<script type="text/javascript">
    var am = [];
    for(var i=1; i<101; i++){
    am[i] = 1;}

    function addmore(index) {
            am[index]++;
            var textarea = document.createElement("textarea");
            textarea.name = "ans" + index + am[index];
            var div = document.createElement("div");
            div.innerHTML = textarea.outerHTML;
            document.getElementById("inner"+index).appendChild(div);
    }
    </script>
<body><button type="button" name="addmore" onClick="addmore(1);">Add more</button>
<form action="result.php" method="post">1) $_POST["que"]<br/><textarea name="ans11"></textarea><br/><div id="inner1"></div><br/><br/><br/><input type="submit" value="CALCULATE"></form>
</body>
</html>

我也找到了这个解决方案,可以解决它。你需要

  1. 可以先将按钮更改为输入type = button,...
  2. 不得为按钮命名或输入与您的功能相同的内容。
  3. 这突出了两个解决方案:

    <?php
    echo '<!DOCTYPE html>
    <html>
    <script type="text/javascript">
    var am = [];
    for(var i=1; i<101; i++){
    am[i] = 1;}
    
    function addmore(index) {
        am[index]++;
        var textarea = document.createElement("textarea");
        textarea.name = "ans" + index + am[index];
        var div = document.createElement("div");
        div.innerHTML = textarea.outerHTML;
        document.getElementById("inner"+index).appendChild(div);
    }
    </script>
    <body>';
        $content = "";
        $question = 'question:';
        $length = 99;
        $j =1;
        $addmore = '<button type="button" name="addsmore" onClick="addmore('.$j.');">Add more</button>';
        echo $addmore;
        echo '<form action="result.php" method="post">';
    
        $area = '<input type="button" value="Add 2more" name="addsdmore" onClick="addmore('.$j.');"></input>
                <textarea name="ans'.$j.'1"></textarea>';
        $content .= $j.') '.$question.'<br/>'.$area.'<br/>
                <div id="inner'.$j.'"></div><br/><br/>';
    
        echo $content;
        echo'<br/><input type="submit" value="CALCULATE"></form>';
        echo '</body>
    </html>';
    ?>