ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์ProgrammingPHP ่javascript เช็คค่าว่างของ Option และ input แบบ Row id array ทำไงงะครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: PHP ่javascript เช็คค่าว่างของ Option และ input แบบ Row id array ทำไงงะครับ  (อ่าน 4505 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
modoindy
Newbie
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 72



ดูรายละเอียด
« เมื่อ: 15 พฤศจิกายน 2019, 11:52:42 »

(มีโค๊ด) ..PHP ่javascript เช็คค่าว่างของ Option  และ input  แบบ Row id  array ทำไงงะครับ
 คือใน record ที่มีการวนลูปแสดงข้อมูลออกมาหลายๆ record
แต่ล่ะ record 1-4ช่อง ต้องกรอก ให้ครบ ไม่กรอก ไม่ผ่าน
บรรทัดไหนไม่กรอก เลยไม่ต้องตรวจจับเช๊ค
ลองไปส่องคนนี้มา  เหมือนจะ แต่ยัง ... https://www.thaicreate.com/php/forum/021719.html





*******CODE *******
โค๊ด:
<input type="hidden" name="company_name[]" value="<?php echo $row["company_name"];?>">

     <input type="hidden" name="company_id[]" value="<?php echo $row["company_id"];?>"></td>



      <td>

        <select name="purchase_channel[]" id="purchase_channel[]" >

          <option value="" selected>-Select-</option>

          <option value="Direct">Direct</option>

          <option value="Agent">Agent</option>

        </select></td>

      <td>

        <input name="amount[]" type="text"style="text-align:right" size="4" id="amount<?php echo $i;?>"  

onKeyUp="javascript:doCal(<?php echo $i;?>);"  onChange="JavaScript:chkNum(this)" onKeyPress="return handleEnter(this, event)"></td>

     <td>

       <input name="price[]" type="text"style="text-align:right" size="4" id="price<?php echo $i;?>"  

onKeyUp="javascript:doCal(<?php echo $i;?>);" onChange="JavaScript:chkNum(this)" onKeyPress="return handleEnter(this, event)"></td>

      <td>

        <input name="sum[]" type="text"style="text-align:right" size="4" id="sum<?php echo $i;?>"  onChange="JavaScript:chkNum(this)" onKeyPress="return handleEnter(this, event)" readonly/></td>

    </tr>

<?php

 $i
++;

}

?>

*******CODE *******[/color][/b]
« แก้ไขครั้งสุดท้าย: 21 พฤศจิกายน 2019, 23:45:05 โดย modoindy » บันทึกการเข้า
BOS
ก๊วนเสียว
*

พลังน้ำใจ: 33
ออฟไลน์ ออฟไลน์

กระทู้: 459



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 15 พฤศจิกายน 2019, 14:09:20 »

อันนี้ผมลองเขียนเดาๆไปตามประสา เป็นการใช้ javascript ช่วยตรวจสอบก่อนทำการ submit ครับ ลองเอาไปประยุกต์ดูนะครับผม

็HTML
โค๊ด:
<form action="" onsubmit="validate(this,event)">
<table>
<tr>
<td class="id">A</td>
<td>
<select name="">
<option value="">- Select -</option>
<option value="1">Select 1</option>
<option value="2">Select 2</option>
</select>
</td>
<td><input type="text" name=""></td>
<td><input type="text" name=""></td>
<td><input type="text" name=""></td>
</tr>
<tr>
<td class="id">B</td>
<td>
<select name="">
<option value="">- Select -</option>
<option value="1">Select 1</option>
<option value="2">Select 2</option>
</select>
</td>
<td><input type="text" name=""></td>
<td><input type="text" name=""></td>
<td><input type="text" name=""></td>
</tr>
<tr>
<td class="id">C</td>
<td>
<select name="">
<option value="">- Select -</option>
<option value="1">Select 1</option>
<option value="2">Select 2</option>
</select>
</td>
<td><input type="text" name=""></td>
<td><input type="text" name=""></td>
<td><input type="text" name=""></td>
</tr>
<tr>
<td><input type="submit"></td>
</tr>
</table>
</form>

Javascript
โค๊ด:
function validate( el,ev ) {
ev.preventDefault();
var tr = el.querySelectorAll("tr");
var rows = true;
var rowr = [];
for ( var i=0; i<tr.length; i++ ) {
var row = tr[i];
var rowId = row.querySelector(".id");
if ( rowId ) {
rowId = rowId.innerHTML;
var col = row.querySelectorAll("select,input");
var cols = true;
for ( var j=0; j<col.length-1; j++ ) {
if ( col[j].value != col[j+1].value ){
cols = false;           
}
}
rowr.push(cols);
if ( !cols ) {
alert( "กรุณากรอกข้อมูลในแถว [[ " + rowId + " ]] ให้ครบถ้วน" );
//break;
}
}
}
if ( rowr.every(Boolean) ) {
alert( "Let's Go. !" );
//el.submit();
}
}

ref=>https://codepen.io/60ss/pen/bGGQNXL
บันทึกการเข้า

modoindy
Newbie
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 72



ดูรายละเอียด
« ตอบ #2 เมื่อ: 15 พฤศจิกายน 2019, 14:39:21 »

 wanwan019
 wanwan004 สุดยอดขอบคุณคราบ  ใช้เลย แต่ๆๆๆ
   ลองกรอก ครบB แล้ว...  มัน ทำไมยัง แจ้งเตือน    ว่าไม่ครบ
 Lips Sealed




อันนี้ผมลองเขียนเดาๆไปตามประสา เป็นการใช้ javascript ช่วยตรวจสอบก่อนทำการ submit ครับ ลองเอาไปประยุกต์ดูนะครับผม

็HTML
โค๊ด:
<form action="" onsubmit="validate(this,event)">
<table>
<tr>
<td class="id">A</td>
<td>
<select name="">
<option value="">- Select -</option>
<option value="1">Select 1</option>
<option value="2">Select 2</option>
</select>
</td>
<td><input type="text" name=""></td>
<td><input type="text" name=""></td>
<td><input type="text" name=""></td>
</tr>
<tr>
<td class="id">B</td>
<td>
<select name="">
<option value="">- Select -</option>
<option value="1">Select 1</option>
<option value="2">Select 2</option>
</select>
</td>
<td><input type="text" name=""></td>
<td><input type="text" name=""></td>
<td><input type="text" name=""></td>
</tr>
<tr>
<td class="id">C</td>
<td>
<select name="">
<option value="">- Select -</option>
<option value="1">Select 1</option>
<option value="2">Select 2</option>
</select>
</td>
<td><input type="text" name=""></td>
<td><input type="text" name=""></td>
<td><input type="text" name=""></td>
</tr>
<tr>
<td><input type="submit"></td>
</tr>
</table>
</form>

Javascript
โค๊ด:
function validate( el,ev ) {
ev.preventDefault();
var tr = el.querySelectorAll("tr");
var rows = true;
var rowr = [];
for ( var i=0; i<tr.length; i++ ) {
var row = tr[i];
var rowId = row.querySelector(".id");
if ( rowId ) {
rowId = rowId.innerHTML;
var col = row.querySelectorAll("select,input");
var cols = true;
for ( var j=0; j<col.length-1; j++ ) {
if ( col[j].value != col[j+1].value ){
cols = false;            
}
}
rowr.push(cols);
if ( !cols ) {
alert( "กรุณากรอกข้อมูลในแถว [[ " + rowId + " ]] ให้ครบถ้วน" );
//break;
}
}
}
if ( rowr.every(Boolean) ) {
alert( "Let's Go. !" );
//el.submit();
}
}

ref=>https://codepen.io/60ss/pen/bGGQNXL
« แก้ไขครั้งสุดท้าย: 21 พฤศจิกายน 2019, 23:38:41 โดย modoindy » บันทึกการเข้า
BOS
ก๊วนเสียว
*

พลังน้ำใจ: 33
ออฟไลน์ ออฟไลน์

กระทู้: 459



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 15 พฤศจิกายน 2019, 15:46:15 »

ขอโทษทีครับ ผมพลาด

แก้ตรงนี้นะครับ

จาก

โค๊ด:
for ( var j=0; j<col.length-1; j++ ) {
if ( col[j].value != col[j+1].value ){
cols = false;           
}
}

เป็น

โค๊ด:
for ( var j=1; j<col.length; j++ ) {
var b = col[j-1].value ? 1 : 0;
var c = col[j].value ? 1 : 0;
if ( b != c ){
cols = false;           
}
}

https://codepen.io/60ss/pen/bGGQNXL

wanwan019
 wanwan004 สุดยอดขอบคุณคราบ  ใช้เลย แต่ๆๆๆ
   ลองกรอก ครบB แล้ว...  มัน ทำไมยัง แจ้งเตือน    ว่าไม่ครบ
 Lips Sealed



บันทึกการเข้า

modoindy
Newbie
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 72



ดูรายละเอียด
« ตอบ #4 เมื่อ: 15 พฤศจิกายน 2019, 16:11:48 »

ได้แล้วคราบ ผ่านไป  alert( "Let's Go. !" );
****************************
อยากเข้าใจ ช่วยอธิบายขอ รุ้บ้างได้ไหมคราบ

ถ้า ค่ามัน มีมากกว่า acb  เป็น array echo $i  ++
 
<td class="id">(<?php echo $i;?>)<?php echo $row["company_name"];?></td>


เราจะกำหนดอย่างไร
var b = col[j-1].value ? 1 : 0;
   var c = col[j].value ? 1 : 0;
wanwan017



ขอโทษทีครับ ผมพลาด

แก้ตรงนี้นะครับ

จาก

โค๊ด:
for ( var j=0; j<col.length-1; j++ ) {
if ( col[j].value != col[j+1].value ){
cols = false;          
}
}

เป็น

โค๊ด:
for ( var j=1; j<col.length; j++ ) {
var b = col[j-1].value ? 1 : 0;
var c = col[j].value ? 1 : 0;
if ( b != c ){
cols = false;            
}
}

https://codepen.io/60ss/pen/bGGQNXL

« แก้ไขครั้งสุดท้าย: 21 พฤศจิกายน 2019, 23:43:57 โดย modoindy » บันทึกการเข้า
BOS
ก๊วนเสียว
*

พลังน้ำใจ: 33
ออฟไลน์ ออฟไลน์

กระทู้: 459



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 15 พฤศจิกายน 2019, 20:51:38 »

ก็ไม่ต้องกำหนดอะไรเพิ่มเติมนะครับ เพราะใน js function ที่ผมเขียน มันก็วน loop เอาค่าทั้งหมดมาตรวจสอบอยู่แล้วครับ
ส่วนชุดนี้เป็นการตรวจสอบค่า input ใน แต่ละ row คือถ้ามีการป้อนข้อมูลใน input ตัวใดๆใน row นั้นๆ แต่ป้อนไม่ครบ ก็จะเป็น false ส่วน b และ c เป็นเพียงตัวแปร ที่ใช้เก็บค่า input ใน loop เพื่อมาเปรียบเทียบ (ไม่ได้เกี่ยวกับจำนวนหรือชื่อแถวนะครับ)
โค๊ด:
var cols = true;
for ( var j=1; j<col.length; j++ ) {
var b = col[j-1].value ? 1 : 0; // b : before : ค่าของ input ตำแหน่งก่อนหน้า
var c = col[j].value ? 1 : 0; // c : current : ค่าของ input ณ ตำแหน่งปัจจุบัน
if ( b != c ){
cols = false;           
}
}

ส่วน ถ้าค่า มีมากกว่า abc ก็มีการวน loop tr อยู่แล้วไงครับ จะมีอีกสักกี่แถว มันก็วนเอามาจนหมดครับ

สรุปแล้ว โค้ดชุดนี้ยังใช้ได้ แม้จะมีการเพิ่มแถวใหม่อีก หรือ เพิ่ม input อื่นๆอีกกี่ตัวก็ตาม แค่เป็นไปตามรูปแบบที่กำหนดไว้ประมาณนี้ครับผม


อยากเข้าใจ ช่วยอธิบายขอ รุ้บ้างได้ไหมคราบ

ถ้า ค่ามัน มีมากกว่า acb  เป็น array echo $i  ++
 
<td class="id">(<?php echo $i;?>)<?php echo $row["company_name"];?></td>


เราจะกำหนดอย่างไร
var b = col[j-1].value ? 1 : 0;
   var c = col[j].value ? 1 : 0;
wanwan017

บันทึกการเข้า

modoindy
Newbie
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 72



ดูรายละเอียด
« ตอบ #6 เมื่อ: 19 พฤศจิกายน 2019, 14:11:53 »

wanwan004 แล้ว ผมจะให้
 <form action="/action_page.php
 ต้องไปใส่ ตรงไหน ของ javaคราบ กรอกครบแล้ว  
  alert( "Let's Go. !" );  Tongue  
ขอบคุณมากเลยคราบ

 
ก็ไม่ต้องกำหนดอะไรเพิ่มเติมนะครับ เพราะใน js function ที่ผมเขียน มันก็วน loop เอาค่าทั้งหมดมาตรวจสอบอยู่แล้วครับ
ส่วนชุดนี้เป็นการตรวจสอบค่า input ใน แต่ละ row คือถ้ามีการป้อนข้อมูลใน input ตัวใดๆใน row นั้นๆ แต่ป้อนไม่ครบ ก็จะเป็น false ส่วน b และ c เป็นเพียงตัวแปร ที่ใช้เก็บค่า input ใน loop เพื่อมาเปรียบเทียบ (ไม่ได้เกี่ยวกับจำนวนหรือชื่อแถวนะครับ)
โค๊ด:
var cols = true;
for ( var j=1; j<col.length; j++ ) {
var b = col[j-1].value ? 1 : 0; // b : before : ค่าของ input ตำแหน่งก่อนหน้า
var c = col[j].value ? 1 : 0; // c : current : ค่าของ input ณ ตำแหน่งปัจจุบัน
if ( b != c ){
cols = false;            
}
}

ส่วน ถ้าค่า มีมากกว่า abc ก็มีการวน loop tr อยู่แล้วไงครับ จะมีอีกสักกี่แถว มันก็วนเอามาจนหมดครับ

สรุปแล้ว โค้ดชุดนี้ยังใช้ได้ แม้จะมีการเพิ่มแถวใหม่อีก หรือ เพิ่ม input อื่นๆอีกกี่ตัวก็ตาม แค่เป็นไปตามรูปแบบที่กำหนดไว้ประมาณนี้ครับผม


อยากเข้าใจ ช่วยอธิบายขอ รุ้บ้างได้ไหมคราบ

ถ้า ค่ามัน มีมากกว่า acb  เป็น array echo $i  ++
 
<td class="id">(<?php echo $i;?>)<?php echo $row["company_name"];?></td>


เราจะกำหนดอย่างไร
var b = col[j-1].value ? 1 : 0;
   var c = col[j].value ? 1 : 0;
wanwan017

« แก้ไขครั้งสุดท้าย: 21 พฤศจิกายน 2019, 23:40:19 โดย modoindy » บันทึกการเข้า
BOS
ก๊วนเสียว
*

พลังน้ำใจ: 33
ออฟไลน์ ออฟไลน์

กระทู้: 459



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 19 พฤศจิกายน 2019, 15:22:09 »

wanwan004 แล้ว ผมจะให้
 <form action="/action_page.php  ต้องไปใส่ ตรงไหน ของ javaคราบ กรอกครบแล้ว 
  ยังเด้ง  alert( "Let's Go. !" );  Tongue 

ขอบคุณมากเลยคราบ
 ไปถามคนในเฟส ไม่แนะนำ มีแต่ อวดรู้ Cry
   Lips Sealed  wanwan022


แก้จาก
โค๊ด:
if ( rowr.every(Boolean) ) {
alert( "Let's Go. !" );
//el.submit();
}

เป็น
โค๊ด:
if ( rowr.every(Boolean) ) {
el.submit();
}

ครับ
บันทึกการเข้า

modoindy
Newbie
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 72



ดูรายละเอียด
« ตอบ #8 เมื่อ: 20 พฤศจิกายน 2019, 11:24:52 »

                   wanwan004
« แก้ไขครั้งสุดท้าย: 21 พฤศจิกายน 2019, 23:40:57 โดย modoindy » บันทึกการเข้า
pinkam0327
ก๊วนเสียว
*

พลังน้ำใจ: 31
ออฟไลน์ ออฟไลน์

กระทู้: 441



ดูรายละเอียด
« ตอบ #9 เมื่อ: 20 พฤศจิกายน 2019, 12:10:56 »

ขอดูโค้ดได้ไหมครับ

1.พอไม่กรอก row  ** อะไรเลย   กด submit ได้เฉย 55  // จะหาทางแก้ดูคราบ
2 . ตย ภาพ .กรอกเพียง แค่ 1 row .. เด้ง java มาหมด เลย  ตัวอย่างมี row 12 
    แถม input ที่ซ่อน  td id เด้งมาโชว์ 12 ไล่กด โอเค   Embarrassed javascript:void(0);



บันทึกการเข้า
modoindy
Newbie
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 72



ดูรายละเอียด
« ตอบ #10 เมื่อ: 21 พฤศจิกายน 2019, 23:34:45 »

                  Lips Sealed
« แก้ไขครั้งสุดท้าย: 25 พฤศจิกายน 2019, 09:39:56 โดย modoindy » บันทึกการเข้า
modoindy
Newbie
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 72



ดูรายละเอียด
« ตอบ #11 เมื่อ: 21 พฤศจิกายน 2019, 23:36:57 »


เราจะใส่อะไร..เพิ่มครบ
ถ้าไม่กรอกเลย ดัก ให้เตือนกรอกสักช่อง
เพราะตอนนี้ ไม่่กรอกเลยกด
 ไปที่ action
เลย คราบ  el.submit();[/color][/size]

ขอโทษทีครับ ผมพลาด

แก้ตรงนี้นะครับ

จาก

โค๊ด:
for ( var j=0; j<col.length-1; j++ ) {
if ( col[j].value != col[j+1].value ){
cols = false;          
}
}

เป็น

โค๊ด:
for ( var j=1; j<col.length; j++ ) {
var b = col[j-1].value ? 1 : 0;
var c = col[j].value ? 1 : 0;
if ( b != c ){
cols = false;            
}
}

https://codepen.io/60ss/pen/bGGQNXL



[/quote]
« แก้ไขครั้งสุดท้าย: 25 พฤศจิกายน 2019, 13:40:19 โดย modoindy » บันทึกการเข้า
หน้า: [1]   ขึ้นบน
พิมพ์