2017-11-23 10 views
0

内部にフォームフィールドを持つdivを無効にすることがあります。私はそのdivの他のフィールドを持っています。フォームを送信すると、無効なdiv内のフィールドが空にデータベースに送信されます。 無効になっているdiv内のすべてのフィールドが無効になっているので、それを送信しないようにするにはどうすればよいですか?私の目的は、ディセーブルdiv内のフィールドを無効にするとテーブルに保存することです。。 divのフィールドは別のテーブルに保存されます。div内のすべてのフィールドをjQueryで無効にする

私は読み取り専用を入れてみましたが、これは彼らが提出から形成防ぐことはできません。

<form> 
    <div id="disable_texarea"> 
    <textarea class="form-control" id="textarea1" disabled ></textarea> 
    <textarea class="form-control" id="textarea2" disabled></textarea> 
    <!--there are many inside the disabled div--> 
    </div> 

    <input type="text" id="input1"> 
    <input type="text" id="input2"> 
    <input type="text" id="input3"> 
</form> 

JS

$(document).ready(function() { 
    $("#disable_texarea *").prop('disabled', true); 
}); 
+1

非常に疑わしい。 https://stackoverflow.com/questions/1355728/values-of-disabled-inputs-will-not-be-submitted-あなたのコードにもあなたのIDはありません – mplungjan

+0

無効なフィールドが送信されたため、あなたのリンクは私の質問とは異なります。 – Diasline

+0

有効な値だけを送信しようとしていますか?無効にされた値は単に値引きする必要がありますか? –

答えて

0

は、フィールドに名前を付けて - 名前のない場合は、何も

に送信されない唯一のフィールドが発見され、これを参照してください - 無効な名前のテキストエリアも

が見つかりません

$(function() { 
 
    $("#disable_texarea *").prop('disabled', true); 
 
    $("#but").on("click", function() { 
 
    console.log($(this).closest("form").serialize()) 
 
    }) 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form> 
 
    <div id="disable_texarea"> 
 
    <textarea class="form-control" name="textarea1" id="textarea1" disabled></textarea> 
 
    <textarea class="form-control" id="textarea2" disabled></textarea> 
 
    <!--there are many inside the disabled div--> 
 
    </div> 
 

 
    <input type="text" name="input1" id="input1"> 
 
    <input type="text" id="input2"> 
 
    <input type="text" id="input3"> 
 
    <input type="button" id="but" value="click" /> 
 
</form>

+0

まだ動作していません – Diasline

+0

まだ動作していませんか?あなたは何を見ますか?説明のためにサーバーコード – mplungjan

0

jQueryを使用してdivのすべての子にアクセスしてみてください。

$("#disable_textarea").children().prop("disabled", true); 

それとも

$("#disable_textarea").children().attr("disabled", true); 
1

私はあなたの質問を理解していれば、あなたはこれを行うことができ、あなたはあなたができる送信ボタンを持つことになります後、この

<form id="myForm"> 
<div id="disable_texarea"> 
    <textarea class="form-control" id="textarea1" disabled > </textarea> 
    <textarea class="form-control" id="textarea2" disabled> </textarea> 
    <!--there are many inside the disabled div--> 
</div> 

    <input type="text" id="input1"> 
    <input type="text" id="input2"> 
    <input type="text" id="input3"> 
</form> 

のように、フォームにIDを挿入do

array=[]; 
    $('#submitButton').submit(function(event){ 
    $('#myForm textarea').each(function(k,w){ 
     disabledText = $(w).is(':disabled')); 
     if (disabledText == true){ 
      idOfTheDisabledTextarea = w.id; 
      array.push(idOfTheDisabledTextarea);//<--insert id disabled in an array 
      console.log(idOfTheDisabledTextarea); //<--These are the id of the disabled textarea 
     } 

    }); 
    }); 
    console.log(array); 

あなたは名前がサーバ側で取得したい場合は、HTML上で、あなたが

 nameOfTheDisabledTextarea = w.name; 

を書きますそして、これらの名前の後にあなたがDBに挿入を行うときに、あなたがやりたいことができるかどうかに名前を挿入。 名前が配列で無効になっていて、それ以外の場合はテーブルAに保存されていれば、サーバから名前が無効な名前の配列が得られます。このように...私は使用配列が最適な解決策だと思いますあなたがテキストや入力の名前が無効になっているときにあなたが望む方法を行うことができますが、あなたは識別力のある要素が必要です。配列が名前で配列されている場合に最適です。あなたはDOMを操作することができ、ajaxデータで配列をアタッチした後、IMHOは送信ボタンではなくajax呼び出しを行う方が良いですが、submitイベントでも行うことができるので、このブレーカでは代わりに送信ボタンを呼び出しますjqueryのが、そこに提出されたデータに配列を追加する必要があります。 私は質問を理解したら.....さようなら

+0

を送信していません。私は代わりに断る側で私の問題を解決しました。しかしあなたの応答は関連しています。 – Diasline

関連する問題