ขอวิธีเช็คจำนวน bullet ก่อนนำไปบันทึก [phpBB]

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
eange08
PHP VIP Members
PHP VIP Members
โพสต์: 16184
ลงทะเบียนเมื่อ: 22/12/2020 10:09 am

ขอวิธีเช็คจำนวน bullet ก่อนนำไปบันทึก [phpBB]

โพสต์ที่ยังไม่ได้อ่าน โดย eange08 »

อันนี้เป็นหน้าแก้ไข ถ้าไม่ได้ใส่อะไรเพิ่มใน textarea นี้ แล้วจะนำมาเช็คใน event กรณีที่ใส่ bullet น้อยกว่า 3 ข้อให้แสดง error จะต้องเช็คตัว bullet ยังงัยค่ะ
ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM-1.png
ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM-1.png (21.73 KiB) Viewed 1058 times
หน้า template

โค้ด: เลือกทั้งหมด

<div class="key-point">
        <textarea onkeyup="handleInput(event)" rows="10" id="subtopic" name="subtopic" class='inputbox keynote-text'>{SUB_TOPIC_IDEAS}</textarea>
    </div>
    <input id="row_key" name="row_key" value="1" type="hidden">
    
ค่าที่ได้จาก textarea

โค้ด: เลือกทั้งหมด

• gregrgr • hrhrhr
ไฟล์ listener.php ใช้ event เช็คส่ง error ไปค่ะ

โค้ด: เลือกทั้งหมด

public function posting_modify_message_text($event){
       $error = $event['error'];
       if(!$this->request->variable('subtopic','',TRUE)){
            $error[] = $this->user->lang('ERROR_SUBTOPIC');
       }
         if($this->request->variable('row_key',0)<3){
            $error[] = $this->user->lang('ERROR_SUBTOPIC_UNIT');
       }
        $event['error'] = $error;
   }
ไฟล์ javascript ที่ใส่ bullet

โค้ด: เลือกทั้งหมด

const bullet = "\u2022";
const bulletWithSpace = `${bullet} `;
const enter = 13;


const handleInput = (event) => {
  const { keyCode, target } = event;
  const { selectionStart, value } = target;
  var row = parseInt($('#row_key').val());
  if (keyCode === enter) {
    
    target.value = [...value]
      .map((c, i) => i === selectionStart - 1
        ? `\n${bulletWithSpace}`
        : c
      )
      .join('');
      console.log(target.value);
      
      $('#row_key').val(row + 1); //ถ้าตอนเพิ่มให้อันนี้นับให้ เอาไปใช้เช็คได้ แต่ตอนแก้ไขมันจะนับเริ่มจาก 1 ใหม่ถ้ามีการ enter 
    target.selectionStart = selectionStart+bulletWithSpace.length;
    target.selectionEnd = selectionStart+bulletWithSpace.length;
  }
  
  if (value[0] !== bullet) {
    target.value = `${bulletWithSpace}${value}`;
  }
}
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41232
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: ขอวิธีเช็คจำนวน bullet ก่อนนำไปบันทึก [phpBB]

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

เบื่องต้นเช็ค ลองเช็คเป็นค่าวางหรือไม่ว่างก่อนก็ได้ครับ
แล้วค่อยเช็ค จำนวนตัวอักษร อย่างน้อย 6 ตัว และมี การขึ้นบรรทัดใหม่ ก็น่าจะเพียงพอ
\n คือ new line
ลอง var_dump ข้อมูลออกมาเช็คดูก่อว่าฟอร์มส่งอะไรมาบ้าง
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
eange08
PHP VIP Members
PHP VIP Members
โพสต์: 16184
ลงทะเบียนเมื่อ: 22/12/2020 10:09 am

Re: ขอวิธีเช็คจำนวน bullet ก่อนนำไปบันทึก [phpBB]

โพสต์ที่ยังไม่ได้อ่าน โดย eange08 »

นับจาก \n ได้แล้วนะคะ

โค้ด: เลือกทั้งหมด

$subtopic = $this->request->variable('subtopic','',TRUE);
       echo $subtopic.'<br>';
       $your_string = preg_replace('~\R~u', "\r\n", $subtopic ); //เช็คแล้วแทนที่ \n ลงไป
       $message_count =  explode("\n",$your_string);  //ใช้ตัด \n เป็น array ออกมา
       print_r($message_count);
       echo '<br>'.count($message_count);exit(); //ก็จะนับจำนวน array ที่ได้จาก explode ออกมาได้ค่ะ
ผลลัพท์
Programming - PHP-1.png
Programming - PHP-1.png (4.77 KiB) Viewed 1053 times
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 113