พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com | บล็อกอาหาร
Javascript development / สอบถามวิธีป้องกันคำหยาบในการพิมลงtextbox
รุต
รุต
Sat 7 Jan 2006 14:31:02

หวัดดีครับ

รบกวนขอสอบถาม โค้ดจาวาสคลิป ที่เขียนป้องกันคนป้อนคำหยาบลงTextBoxครับ โดยให้เก็บข้อมูลคำหยาบที่เราจะป้องกันให้อยุ่ในรูปของ textfile(สามารถเพิ่มคำที่เราจะป้องกันนี้ได้) พอได้ไหมครับ

   รบกวนขอตัวอย่างtextboxที่จะป้องกันสัก2textboxนะครับ

รบกวนด้วยนะครับ

ขอบคุณมากครับ

Administrator
Sat 7 Jan 2006 16:18:43
การใช้ javascript ในการอ่าน xml file ครับ http://www.sitepoint.com/article/server-side-xml-javascript

หลังจากนั้นทำการ load ข้อมูลลง array ครับแล้วลองทำตามประมาณนี้ครับ

var diniedword = Array('คำ', 'หยาบ');
var str = "ประโยคนี้มีคำหยาบอยู่ในประโยค";

for(i = 0; i < deniedword.length; i++){
    if(str.indexOf(deniedword[i]) != -1){
       alert("พบคำหยาบ");
    }
}
ประมาณนี้ครับ ยังไม่ได้ทดสอบนะครับ
รุต
รุต
Mon 9 Jan 2006 09:10:45

โทษนะครับ  รบกวนขอโค้ดตัวอย่าง  แบบเต็มทีครับ   ผมมองภาพการเขียนมะถูกนะครับ

แบบขอ2textbox วเลาคีคำหยาบลง2textbox  ให้มะสามารถคีได้นะครับ  ให้เก็บคำหยาบลงtextfileเป็นแบบ ฐานข้อมูลครับ

รบกวนด้วยนะครับ

ขอบคุณมากครับ

Administrator
Mon 9 Jan 2006 15:11:26
ผมต้องขอเวลา debug หน่อยนะครับรู้สึกว่าจะมีปัญหากับบาง browser และ xml element ครับ
รุต
รุต
Tue 10 Jan 2006 08:54:54

ยังไงรบกวนด้วยนะครับ  (จะเอาโค้ดมาประยุกใส่เว็บบอร์ดนะครับ )

ขอบคุณมากครับ

Administrator
Tue 10 Jan 2006 11:56:32
ถ้าใช้กับเว็บบอร์ด ไม่ลองใส่ในส่วนของ server-side script ดูละครับน่าจะเป็น solution ที่เหมาะสมกว่าครับ
รุต
รุต
Tue 10 Jan 2006 13:01:14

โทษนะครับผมทำแบบserver-side script มะเป็นนะครับ  รบกวนขอดูตัวอย่างทีครับ

ขอบคุณมากครับ

Administrator
Tue 10 Jan 2006 15:43:01
ขอเป็น php นะครับ

ก่อนอื่นต้องสร้างไฟล์ denied_word.txt โดยเก็บแบบคำละบรรทัด

<?
$list = file("denied_word.txt");

$data = preg_replace($list, "****", $data);

?>
ฟังก์ชั่น file จะเป็นการอ่านข้อมูลจากเอกสารโดยคืนค่ามาเป็น array ของข้อมูล ข้อมูลละ 1 บรรทัด
ฟังก์ชั่น preg_replace เป็นการค้นหาคำที่ตรงตามในตัวแปร list เมื่อพบจะถูกเขียนทับด้วย ดาว 4 ตัว (****)

ถ้าในความคิดของผมแล้วถ้าจะทำการป้องกันคำหยาบใช้ server-side script เป็น solution ที่เหมาะสมที่สุดครับ
รุต
รุต
Thu 12 Jan 2006 11:41:57

ขอบคุณมากครับ

รุต
รุต
Thu 12 Jan 2006 20:02:36

ขอโทษอีกครั้งครับ  คือผมมะอยากให้มันต้องไปเช็คกะอีกหน้าของเพจนะครับ  อยากจะให้มันเชคที่หน้าเดียวเลยนะครับ  พอใส่คำหยาบปุบให้ขึ้นโชข้อความ แล้วเคลียtextboxให้ใส่คำใหม่ทันทีนะครับ  (ถ้าแบบฐานข้อมูลแบบtextfileมะได้  แบบเสามารถเพิ่มคำเข้าไปในโค้ดได้ไหมครับ)

รบกวนขอตัวอย่างสัก2textboxนะครับ

ขอบคุณมากครับ

Administrator
Thu 12 Jan 2006 20:51:40
<script language="javascript">
function checkRude(obj){
    var rudeWord = new Array(<? $list = file("rude_word.txt"); for($i=0; $i<count($list); $i++){ echo (($i==(count($list)-1))?"'".trim($list[$i])."'":"'".trim($list[$i])."',"); } ?>Wink;
    for(i=0; i<rudeWord.length; i++){
       if(obj.value.indexOf(rudeWord[i]) != -1){
          alert("มีคำไม่เหมาะสมครับ");
          break;
       }
    }
}
</script>

<form>
<input type="text" name="text1" onkeyup="checkRude(this)" />
<input type="text" name="text2" onkeyup="checkRude(this)" />
</form>

ลองดูครับประมาณนี้ โดยไฟล์ rude_word.txt นั้นให้เก็บบรรทัดละคำครับ โค๊ดนี้ทำการทดสอบให้แล้วครับ
รุต
รุต
Fri 13 Jan 2006 11:20:58
รบกวนสอบถามครับ  คือผมลองเอาโค้ดมาลองใช้ดู มันมีบักนะครับ  แล้วผมได้ลองทำการแก้ก็ยังมะได้อีกรบกวนช่วยทีครับ
<script language="javascript">
function checkRude(obj){
    var rudeWord = new Array(<? $list = file("rude_word.txt"); for($i=0; $i<count($list); $i++){ echo (($i==(count($list)-1))?"'".trim($list[$i])."'":"'".trim($list[$i])."',"); } ?>;
    for(i=0; i<rudeWord.length; i++){
       if(obj.value.indexOf(rudeWord[i]) != -1){
          alert("มีคำไม่เหมาะสมครับ");
          break;
       }
    }
}
</script>

ส่วนที่ทำการแก้เพิ่ม

<form>
  <p>
    <input type="text" name="text1" onkeyup="checkRude(obj)" />  //--------ผมแก้จากthisเป็นobjตามfunction checkRude(obj)
    <input type="text" name="text2" onkeyup="checkRude(obj)" />//--------ผมแก้จากthisเป็นobjตามfunction checkRude(obj)

  </p>
  <p>
<input type="button" name="Submit" value="Submit" onclick="checkRude(obj);">//-------ผมทำการเพิ่มปุ่มเข้าไปด้วย
  </p>
</form>

ส่วนtextfile  rude_word.txt ผมใส่คำ

คำหยาบ
คำผิด2

ได้ใส่ไป2บรรทัด

รบกวนช่วยแก้ให้มะมีบักทีครับ  หาจุดแก้มะเจอนะครับ

ขอบคุณมากครับ

Administrator
Fri 13 Jan 2006 12:10:49
ที่ตัว object ต้องส่งค่าตัวมันเองไปครับโดยใช้ keyword this ครับ ส่วนสคริปต์ชุดนี้ต้องมี php ช่วยด้วยนะครับ อ่อลืมไปว่าตรงตัวยิ้มนั้นจริงๆมันเป็น วงเล็บปิด ) กับ semi-colon ; ติดกันครับ
รุต
รุต
Fri 13 Jan 2006 12:48:29

โทษนะครับผมลองเอาโค้ดไปลองทำแล้วมันยังมีbugอยู่อะครับ  ผมได้ใส่ ) เพิ่มเข้าไปแล้วก็ยังมีbug

<script language="javascript">
function checkRude(obj){
    var rudeWord = new Array(<? $list = file("rude_word.txt"); for($i=0; $i<count($list); $i++){ echo (($i==(count($list)-1))?"'".trim($list[$i])."'":"'".trim($list[$i])."',"); } ?>Wink;
    for(i=0; i<rudeWord.length; i++){
       if(obj.value.indexOf(rudeWord[i]) != -1){
          alert("มีคำไม่เหมาะสมครับ");
          break;
       }
    }
}
</script>

bugที่เกิดตอนโหลดเปิดเพจ

A Runtime error has occurred.
Do you wish to Debug?
Line: 8
Error: Syntax error

bugที่คีลงไปในช่อง

A Runtime error has occurred.
Do you wish to Debug?
Line: 22
Error: Object expected

ขอบคุณครับ

รุต
รุต
Fri 13 Jan 2006 12:50:26

โทษนะครับผมลองเอาโค้ดไปลองทำแล้วมันยังมีbugอยู่อะครับ  ผมได้ใส่ ) เพิ่มเข้าไปแล้วก็ยังมีbug รบกวนช่วยแก้ให้ทีครับ

<script language="javascript">
function checkRude(obj){
    var rudeWord = new Array(<? $list = file("rude_word.txt"); for($i=0; $i<count($list); $i++){ echo (($i==(count($list)-1))?"'".trim($list[$i])."'":"'".trim($list[$i])."',"); } ?>Wink;
    for(i=0; i<rudeWord.length; i++){
       if(obj.value.indexOf(rudeWord[i]) != -1){
          alert("มีคำไม่เหมาะสมครับ");
          break;
       }
    }
}
</script>

bugที่เกิดตอนโหลดเปิดเพจ

A Runtime error has occurred.
Do you wish to Debug?
Line: 8
Error: Syntax error

bugที่คีลงไปในช่อง

A Runtime error has occurred.
Do you wish to Debug?
Line: 22
Error: Object expected

ขอบคุณครับ

Administrator
Fri 13 Jan 2006 13:37:12
<script language="javascript">
function checkRude(obj){
    var rudeWord = new Array(<? $list = file("rude_word.txt"); for($i=0; $i<count($list); $i++){ echo (($i==(count($list)-1))?"'".trim($list[$i])."'":"'".trim($list[$i])."',"); } ?>Wink ;
    for(i=0; i<rudeWord.length; i++){
       if(obj.value.indexOf(rudeWord[i]) != -1){
          alert("มีคำไม่เหมาะสมครับ");
          break;
       }
    }
}
</script>

<form>
  <p>
    <input type="text" name="text1" onkeyup="checkRude(this)" /><input type="button" name="Submit" value="Submit" onclick="checkRude(this.form.text1);">
    <input type="text" name="text2" onkeyup="checkRude(this)" /><input type="button" name="Submit" value="Submit" onclick="checkRude(this.form.text2);">
  </p>
</form>

ลองดูตามนี้ครับ ผมทดลองทั้ง IE, mozilla และ firefox แล้วไม่มี bug แล้วนะครับ
รุต
รุต
Fri 13 Jan 2006 16:39:17

ขอบคุณมากครับผมรันโค้ดด้านบนผ่านแล้วครับ

โทษอีกทีครับ ผมได้ทำการแก้ไขhtmlด้านล่างนี้แต่มันเกิดbugแก้มะได้  จะให้ปู่มเช็คค่ามันเช็คค่าคำในtextboxแต่ละอัน  ถ้าtextboxไหนมีคำที่ตรงกับข้อมูลในrude_word.txtให้โชว่าคุณใส่คำหยาบตามคำในrude_word.txt  แล้วให้เคลียและโฟกัสที่textboxนั้นทีละช่อง ให้ปุ่มกดมันเช็คที่ฟอร์มนะครับหรือฟังชั่นนะครับ

<form>
  <p>
    <input type="text" name="text1" ><br>
    <input type="text" name="text2" ><br>
 <input type="button" name="Submit" value="Submit" onclick="checkRude(this.form.text1.text2);">
  </p>
</form>

รบกวนด้วยนะครับ

ขอบคุณมากครับ

Administrator
Fri 13 Jan 2006 17:26:19
การเช็คคำนี้ด้วยตัวฟังก์ชั่นที่ผมเขียนไว้นั้นเป็นฟังก์ชั่นที่มีการรับ parameter ตัวเดียวครับคือการส่ง object ที่ต้องการตรวจสอบเข้าไป

<input type="button" name="Submit" value="Submit" onclick="checkRude(this.form.text1.text2);">

จากคำสั่งที่คุณเขียนนี้เป็นการส่งค่าของ object ที่ชื่อ text2 ที่มี parent object ชื่อ text1 และอยู่ใน form ที่ปุ่มนี้วางอยู่ จะเห็นได้ว่าไม่มี object นี้อยู่จริงครับ

ถ้าคุณต้องการให้มีปุ่มเดียวในการเช็คค่าทั้ง 2 object สามารถทำได้โดย
<input type="button" name="Submit" value="Submit" onclick="checkRude(this.form.text1); checkRude(this.form.text2);">

วิธีง่ายๆก็คือเรียกใช้งาน 2 ครั้งครับโดยส่ง object ทั้ง 2 ตัวเข้าไปครับ
รุต
รุต
Mon 16 Jan 2006 08:37:04

ขอบคุณมากครับ

เตย
เตย
Mon 30 Jan 2006 17:12:43

ต้องการนับจำนวนครั้งที่มีการ โหลดแบบฟอร์ม รบกวนช่วยเขียน funtion.ให้หน่อย ค่ะ

Administrator
Tue 31 Jan 2006 12:19:49
นับจำนวนการโหลดแบบฟอร์มนั้นต้องมีการลิงค์ไปยังไฟล์ที่ใช้นับก่อนครับเพื่อให้นับเสร็จแล้วก็ Redirect ไปยังแบบฟอร์มเพื่อทำการโหลดครับ
ลองดูโค๊ดของ counter ทั่วไปดูก็ได้ครับ
MinaTo
MinaTo
Mon 19 Feb 2007 16:20:35

ต้องการให้คำที่หาเจอว่าเป็นคำหยาบที่เราพิมพ์ลงไปนั้น  เมื่อจาวาสคริปมันหาเจอให้ทำการเปลี่ยนเป็น ***  ลงในช่องนั้น ๆ แทน  ไม่ทราบว่ามีวิธีการอย่างไรค่ะ

Reply
Name:
E-mail:
Home | Services | Forum | Classified | Directories | Support | Contact
ATOM feed RSS 0.9 feed RSS 1.0 feed RSS 2.0 feed
Copyright © 2005 - 2007 Modoeye.com, All Rights Reserved.
Disclaimer | Privacy policy | Term of Use | Term of Services
Valid XHTML Valid CSS! PHP: Hypertext Preprocessor MySQL database Apache Powered! FreeBSD Power to serve
Modoeye Sitemap Client login