2017-08-30 10 views
0

私は前に尋ねましたが、私が得た答えは問題を解決しませんでした。私は、少なくとも2つのフォームを持つページを作成しようとしていますが、入力されたテキストが出力テキストエリアに表示されます。私は彼らがお互いに独立して働くことを望みます。私はそれぞれのIDに別々のIDを与え、出力テストエリアに別々のIDを与えるようにしました。しかし、まだ動作していません。助けてください。別の出力が2つのフォームを持つページ

<form name="Form1" onsubmit="return false;" action=""> 
<b><font color="#2C3E60">Name:</font></b><br> 
<input type="text" name="name" id="name" placeholder="Name"><br> 
<b><font color="#2C3E60">Phone number:</font></b><br> 
<input type="text" name="phone" id="phone" placeholder="Phone number"><br> 
<b><font color="#2C3E60">Yes/No?:</font></b> <br> 
<select type="drop" name="Question1" id="question1"> 
<option value="Select Yes or No">...</option> 
<option value="Yes">Yes</option> 
<option value="No">No</option> 
</select> 
<br> 
<b><font color="#2C3E60">Yes/No 2?:</font></b><br> 
<select type="drop" name="Question2" id="question2"> 
<option value="Select Yes, No or n/a">...</option> 
<option value="Yes">Yes</option> 
<option value="No">No</option> 
<option value="n/a">n/a</option> 
</select> 
<br> 
<b><font color="#2C3E60">Notes:</font></b><br> 
<textarea type="textarea" name="Notes" id="notes" placeholder="Problem" cols="70" rows="3"></textarea> 
<br> 
<b><font color="#2C3E60">Issue:</font></b><br> 
<textarea type="textarea" name="Issue" id="issue" placeholder="Issue" cols="70" rows="6"></textarea>  
<br> 
<b><font color="#2C3E60">Action:</font></b><br> 
<textarea type="textarea" name="Action" id="action" placeholder="Action" cols="70" rows="10"></textarea> 
<br> 
<textarea type="textarea" name="form1output" onclick="this.focus();this.select()" id="output" cols="70"  rows="25" placeholder="Output"></textarea> 
<br> 
<div class="btn-group"> 
<button value="Combine" onclick="convert()">Combine</button> <br><br> 
</div>  
<div class="btn-group"> 
<button type="reset" value="Reset form">Reset form</button> <br><br> 
</div> 

</form> 

<hr> 

<form name="Form2" onsubmit="return false;" action=""> 
<b><font color="#2C3E60">Name:</font></b><br> 
<input type="text" name="Name2" id="name2" placeholder="Name"><br> 
<b><font color="#2C3E60">Phone Number:</font></b><br> 
<input type="text" name="Currentnumber" id="currentnumber" placeholder="Corrent phone number"><br> 
<b><font color="#2C3E60">Y or N:</font></b> <br> 
<select type="drop" name="YESNO" id="yesno"> 
<option value="Select Yes or No">...</option> 
<option value="Yes">Yes</option> 
<option value="No">No</option> 
</select> 
<br> 
<b><font color="#2C3E60">Did you offer self serve?:</font></b><br> 
<select type="drop" name="Selfserve" id="SSO"> 
<option value="Select Yes, No or n/a">...</option> 
<option value="Yes">Yes</option> 
<option value="No">No</option> 
<option value="n/a">n/a</option> 
</select> 
<br> 
<b><font color="#2C3E60">Problem:</font></b><br> 
<textarea type="textarea" name="Problem" id="problem" placeholder="Problem" 
cols="70" rows="3">    </textarea> 
<br> 
<b><font color="#2C3E60">Issue:</font></b><br> 
<textarea type="textarea" name="Issue" id="issue2" placeholder="Issue" 
cols="70" rows="6">     </textarea>  
<br> 
<b><font color="#2C3E60">Action:</font></b><br> 
<textarea type="textarea" name="Action" id="action2" placeholder="Action" 
cols="70" rows="10">  </textarea> 
<br> 
<textarea type="textarea" name="form2output" id="output2" 
onclick="this.focus();this.select()"     cols="70" rows="25" 
placeholder="Output"></textarea> 
<br> 
<div class="btn-group"> 
<button value="Combine" onclick="convert()">Combine</button> <br><br> 
</div> 
<div class="btn-group"> 
<button type="reset" value="Reset form">Reset form</button> <br><br> 
</div> 
</form> 

最初のスクリプト:

<script> 
/*Reset command*/ 
$(document).ready(function(){ 
$(":reset").css("background-color", ""); 
}); 
</script> 
<script> 
function wordwrap(str, width, brk, cut) { 
brk = brk || '\n'; 
width = width || 60; 
cut = cut || false; 

if (!str) 
return str; 

var regex = '.{1,' +width+ '}(\\s|$)' + (cut ? '|.{' +width+ '}|.+$' : 
'|\\S+?(\\s|$)'); 

return str.match(RegExp(regex, 'g')).join(brk); 
} 

function convert() { 
var name = document.getElementById("name").value; 
var phone = document.getElementById("phone").value; 
var question1 = document.getElementById("question1").value; 
var question2 = document.getElementById("question2").value; 
var notes = document.getElementById("notes").value; 
var issue = document.getElementById("issue").value; 
var action = document.getElementById("action").value; 
//input = wordwrap(input, 70, true); 

var output = ""; 

output += "Name: " + name + "\n"; 
output += "Number: " + phone + "\n"; 
output += "Question 1?: " + question1 + "\n"; 
output += "Question 2?: " + question2 + "\n\n"; 
output += "Notes: " + notes + "\n\n"; 
output += "Issue: " + issue + "\n\n"; 
output += "Action: " + action + " "; 


document.getElementById("output").value = output; 
} 


function myFunction(x) { 
x.classList.toggle("change"); 
} 
</script> 

そして、2番目のスクリプト:

<script> 
function wordwrap(str, width, brk, cut) { 
brk = brk || '\n'; 
width = width || 60; 
cut = cut || false; 

if (!str) 
return str; 

var regex = '.{1,' +width+ '}(\\s|$)' + (cut ? '|.{' +width+ '}|.+$' : 
'|\\S+?(\\s|$)'); 

return str.match(RegExp(regex, 'g')).join(brk); 
} 

function convert() { 
var Name2 = document.getElementById(name2").value; 
var Currentnumber = document.getElementById("currentnumber").value; 
var YESNO = document.getElementById("yesno").value; 
var selfserve = document.getElementById("SSO").value; 
var problem = document.getElementById("problem").value; 
var issue2 = document.getElementById("issue2").value; 
var action2 = document.getElementById("action2").value; 
//input = wordwrap(input, 70, true); 

var output = ""; 

output += "Name2: " + name2 + "\n"; 
output += "Current number: " + currentnumber + "\n"; 
output += "Yes No?: " + yesno + "\n"; 
output += "Self Serve?: " + selfserve + "\n\n"; 
output += "Problem: " + problem + "\n\n"; 
output += "Issue: " + issue2 + "\n\n"; 
output += "Action: " + action2 + " "; 


document.getElementById("output2").value = output2; 
} 

function myFunction(x) { 
x.classList.toggle("change"); 
} 

</script> 

は、私が何をしないのですか?

答えて

0

最終的には、同じ名前の関数を共有する2つのスクリプトがあることが問題です。しかし、jQueryを最大限に活用すれば、ロジックを単純化できます。

(1)利便性のために、あなたのボタンにidtype="button"を追加します:idはまもなくボタンを区別することであり、type="button"は、デフォルトで提出からフォームを防ぐためです。

<button type="button" id="combine1">Combine</button> 

<button type="button" id="combine2">Combine</button> 

(2)

$('#combine1').click(function() { // get current form var button = $(this), form = button.closest('form'); // get field values within current form var name = form.find("[name=name]").val(), phone = form.find("[name=phone]").val(), question1 = form.find("[name=question1]").val(), question2 = form.find("[name=question2]").val(), notes = form.find("[name=notes]").val(), issue = form.find("[name=issue]").val(), action = form.find("[name=action]").val(); var output = ""; output += "Name: " + name + "\n"; output += "Number: " + phone + "\n"; output += "Question 1?: " + question1 + "\n"; output += "Question 2?: " + question2 + "\n\n"; output += "Notes: " + notes + "\n\n"; output += "Issue: " + issue + "\n\n"; output += "Action: " + action + " "; form.find("[name=output]").val(output); }); // same idea as previous one $('#combine2').click(function() { var button = $(this), form = button.closest('form'); var name = form.find("[name=name]").val(), phone = form.find("[name=phone]").val(), yesno = form.find("[name=yesno]").val(), selfserve = form.find("[name=selfserve]").val(), problem = form.find("[name=problem]").val(), issue = form.find("[name=issue]").val(), action = form.find("[name=action]").val(); var output = ""; output += "Name: " + name + "\n"; output += "Phone: " + phone + "\n"; output += "Yes No?: " + yesno + "\n"; output += "Self Serve?: " + selfserve + "\n\n"; output += "Problem: " + problem + "\n\n"; output += "Issue: " + issue + "\n\n"; output += "Action: " + action + " "; form.find("[name=output]").val(output); }); 

あなたのボタンにonclickイベントハンドラをアタッチその他注意事項

document.getElementById()だけ$(selector)を使用し、jQueryを使ってとても時代遅れです。 selectorには多くのバリエーションがあります。 #id.class[name=name]など

また、あなたはform.find("[name=name]").val()と同じである要素、すなわち$("[name=name]", form).val()内の要素を見つけるために、selector contextを追加することができます。

説明のために、フォーム内のIDを削除し、いくつかのフィールドは両方のフォームで同じ名前を共有しています。フィールドが異なるのは、セレクタコンテキストを使用することです。

デモ

$(function() { 
 
    $('#combine1').click(function() { 
 
    console.clear(); 
 
    console.log(this.id); 
 
    
 
    var button = $(this), 
 
     form = button.closest('form'); 
 
     
 
    var name = form.find("[name=name]").val(), 
 
     phone = form.find("[name=phone]").val(), 
 
     question1 = form.find("[name=question1]").val(), 
 
     question2 = form.find("[name=question2]").val(), 
 
     notes = form.find("[name=notes]").val(), 
 
     issue = form.find("[name=issue]").val(), 
 
     action = form.find("[name=action]").val(); 
 

 
    var output = ""; 
 
    output += "Name: " + name + "\n"; 
 
    output += "Number: " + phone + "\n"; 
 
    output += "Question 1?: " + question1 + "\n"; 
 
    output += "Question 2?: " + question2 + "\n\n"; 
 
    output += "Notes: " + notes + "\n\n"; 
 
    output += "Issue: " + issue + "\n\n"; 
 
    output += "Action: " + action + " "; 
 

 
    form.find("[name=output]").val(output); 
 
    }); 
 

 

 
    $('#combine2').click(function() { 
 
    console.clear(); 
 
    console.log(this.id); 
 
    
 
    var button = $(this), 
 
     form = button.closest('form'); 
 

 
    var name = form.find("[name=name]").val(), 
 
     phone = form.find("[name=phone]").val(), 
 
     yesno = form.find("[name=yesno]").val(), 
 
     selfserve = form.find("[name=selfserve]").val(), 
 
     problem = form.find("[name=problem]").val(), 
 
     issue = form.find("[name=issue]").val(), 
 
     action = form.find("[name=action]").val(); 
 

 
    var output = ""; 
 
    output += "Name: " + name + "\n"; 
 
    output += "Phone: " + phone + "\n"; 
 
    output += "Yes No?: " + yesno + "\n"; 
 
    output += "Self Serve?: " + selfserve + "\n\n"; 
 
    output += "Problem: " + problem + "\n\n"; 
 
    output += "Issue: " + issue + "\n\n"; 
 
    output += "Action: " + action + " "; 
 

 
    form.find("[name=output]").val(output); 
 
    }); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<!-- FORM 1 --> 
 
<form name="Form1" action=""> 
 
    <b><font color="#2C3E60">Name:</font></b><br> 
 
    <input type="text" name="name" placeholder="Name"><br> 
 
    <b><font color="#2C3E60">Phone number:</font></b><br> 
 
    <input type="text" name="phone" placeholder="Phone number"><br> 
 
    <b><font color="#2C3E60">Yes/No?:</font></b> <br> 
 
    <select type="drop" name="question1"> 
 
     <option value="Select Yes or No">...</option> 
 
     <option value="Yes">Yes</option> 
 
     <option value="No">No</option> 
 
    </select> 
 
    <br> 
 
    <b><font color="#2C3E60">Yes/No 2?:</font></b><br> 
 
    <select type="drop" name="question2"> 
 
     <option value="Select Yes, No or n/a">...</option> 
 
     <option value="Yes">Yes</option> 
 
     <option value="No">No</option> 
 
     <option value="n/a">n/a</option> 
 
    </select> 
 
    <br> 
 
    <b><font color="#2C3E60">Notes:</font></b><br> 
 
    <textarea type="textarea" name="notes" placeholder="Problem" cols="70" rows="3"></textarea> 
 
    <br> 
 
    <b><font color="#2C3E60">Issue:</font></b><br> 
 
    <textarea type="textarea" name="issue" placeholder="Issue" cols="70" rows="6"></textarea> 
 
    <br> 
 
    <b><font color="#2C3E60">Action:</font></b><br> 
 
    <textarea type="textarea" name="action" placeholder="Action" cols="70" rows="10"></textarea> 
 
    <br> 
 
    <textarea type="textarea" name="output" onclick="this.focus();this.select()" cols="70" rows="25" placeholder="Output"></textarea> 
 
    <br> 
 
    <div class="btn-group"> 
 
    <button type="button" id="combine1">Combine</button> <br><br> 
 
    </div> 
 
    <div class="btn-group"> 
 
    <button type="reset" value="Reset form">Reset form</button> <br><br> 
 
    </div> 
 
</form> 
 

 
<hr> 
 

 
<!-- FORM 2 --> 
 
<form name="Form2" action=""> 
 
    <b><font color="#2C3E60">Name:</font></b><br> 
 
    <input type="text" name="name" placeholder="Name"><br> 
 
    <b><font color="#2C3E60">Phone Number:</font></b><br> 
 
    <input type="text" name="phone" placeholder="Corrent phone number"><br> 
 
    <b><font color="#2C3E60">Y or N:</font></b> <br> 
 
    <select name="yesno"> 
 
     <option value="Select Yes or No">...</option> 
 
     <option value="Yes">Yes</option> 
 
     <option value="No">No</option> 
 
    </select> 
 
    <br> 
 
    <b><font color="#2C3E60">Did you offer self serve?:</font></b><br> 
 
    <select name="selfserve"> 
 
     <option value="Select Yes, No or n/a">...</option> 
 
     <option value="Yes">Yes</option> 
 
     <option value="No">No</option> 
 
     <option value="n/a">n/a</option> 
 
    </select> 
 
    <br> 
 
    <b><font color="#2C3E60">Problem:</font></b><br> 
 
    <textarea type="textarea" name="problem" placeholder="Problem" cols="70" rows="3">    </textarea> 
 
    <br> 
 
    <b><font color="#2C3E60">Issue:</font></b><br> 
 
    <textarea type="textarea" name="issue" placeholder="Issue" cols="70" rows="6">     </textarea> 
 
    <br> 
 
    <b><font color="#2C3E60">Action:</font></b><br> 
 
    <textarea type="textarea" name="action" placeholder="Action" cols="70" rows="10">  </textarea> 
 
    <br> 
 
    <textarea type="textarea" name="output" onclick="this.focus();this.select()" cols="70" rows="25" placeholder="Output"></textarea> 
 
    <br> 
 
    <div class="btn-group"> 
 
    <button type="button" id="combine2">Combine</button> <br><br> 
 
    </div> 
 
    <div class="btn-group"> 
 
    <button type="reset" value="Reset form">Reset form</button> <br><br> 
 
    </div> 
 
</form>

+0

うわー、それは素晴らしいです。私はそれをすべて理解していないと認めます。そのようなJQuery。しかし、私はもっと学ぶことに興味があります。あなたの例は完璧に機能します。ありがとうございました。 –

+0

@TyHすぐにそれをぶら下げます。親切に答えとしてマークしてください。 – Mikey

+0

また、私は、これが必要と思われる別のページへの参照なしに、単一のページ内からのすべての作業にこれを必要としているはずです。同じページ内で使用できる解決策はありますか? –

関連する問題