iT邦幫忙

1

(已解決)阻止編輯內容中,一些特殊符號的寫入

小斑 2017-09-13 16:53:4512930 瀏覽

我使用了 jeditable 完成點擊編輯和上傳資料庫的功能,

jeditable 參考:
參考一
參考二

但我需要阻止一些特殊符號的寫入,如 ‘/’ , ‘?’
請問我應該如何加入呢
我希望能在編輯時就會同步檢查編輯內容

謝謝
/images/emoticon/emoticon41.gif

看更多先前的討論...收起先前的討論...
baida0630 iT邦新手 4 級 ‧ 2017-09-13 17:00:13 檢舉
看問題我直覺地想到就是這招
http://www.w3school.com.cn/jquery/event_keyup.asp
https://www.w3schools.com/jsref/jsref_replace.asp
keyup + replace
fillano iT邦超人 1 級 ‧ 2017-09-13 17:59:19 檢舉
最好後端再過濾一次才進資料庫,不然我用工具手動送post,這些還是會進去資料庫。(惡意程式也是這樣)
baida0630 iT邦新手 4 級 ‧ 2017-09-13 18:06:41 檢舉
其實我也是覺得submit的時候再做這件事情就好,不過他提出 編輯時就會同步檢查編輯內容 我想到的就是Keyup了
小斑 iT邦新手 3 級 ‧ 2017-09-13 19:31:01 檢舉
好的,謝謝提醒,我會試試看在後端檢查
小斑 iT邦新手 3 級 ‧ 2017-09-14 09:43:02 檢舉
請問我如何在前端先取到編輯的值呢?

因為使用Jeditable,在按下「修改」送出表單時,Jeditable預設後端會接收到兩個POST變數:$_POST['id']和$_POST ['value']。

$_POST['id']的值等於前述放在div裡的id值,$ _POST['value']則是在表單欄位內輸入的值。

但使用這個外掛,我不知道如何在前端取到編輯的值,麻煩指點,謝謝
小斑 iT邦新手 3 級 ‧ 2017-09-14 10:03:30 檢舉
或是我如何將後端取到的值進行檢查?
在檢查發現有特殊符號後,又如何傳回前端?在前端顯示提醒訊息
謝謝
baida0630 iT邦新手 4 級 ‧ 2017-09-14 11:26:28 檢舉
http://www.w3school.com.cn/jquery/manipulation_html.asp 1. HTML()
http://www.w3school.com.cn/jquery/attributes_val.asp 2. val()
http://www.w3school.com.cn/jquery/manipulation_text.asp 3. text()
baida0630 iT邦新手 4 級 ‧ 2017-09-14 11:26:48 檢舉
這三個去玩一下 相信很快你就能想到解法的
baida0630 iT邦新手 4 級 ‧ 2017-09-14 11:40:27 檢舉
應該說 你先去了解一下JQuery 我貼的網址裡面都能在線上玩 去玩一下 你就能有基本的了解了 html() val() text()都是針對物件取值的基礎練習 keyup則是你在這個物件中做鍵盤輸入動作的時候他就執行一次你要給予的動作的練習 這些都是純前端的東西 你在前端做完你想做的事情 button click的時候可以再做一次檢查 因為我看你本來就是使用jquery的東西 所以給你的東西都是這方向的


在直白點 你直接在keyup的function裡面做檢查
在button click的function裡面做二次檢查 就進資料庫了

另外 提示訊息看你要怎麼做 最一般都用alert吧 https://www.w3schools.com/jsref/met_win_alert.asp

你的疑問我覺得是對於jquery的不熟悉導致的 我建議w3schools裡面javascript 和jquery部分都玩一次 可以解決你很多的問題
小斑 iT邦新手 3 級 ‧ 2017-09-15 13:57:05 檢舉
好的,謝謝
小斑 iT邦新手 3 級 ‧ 2017-09-15 16:11:02 檢舉
您好,我發現我的問題是使用 jeditable 外掛,我不知道如何告訴網頁我要檢查 textarea 的值,
jeditable script 如以下範例:
$('.jedit').editable('jeditable.php',{
type : 'textarea',
cancel : '取消',
submit : '修改',
indicator : '正在儲存中',
tooltip : '點擊修改',
width: "400px"
});

若使用以下方式測試沒問題,(但我需要使用 jeditable)
<script>
function check(obj) {
obj.value = obj.value.replace(/[\s ]+/g, "");
var re=/[/?/]/;
if (re.test(obj.value)){
obj.value=""
alert("不能有 '/' 或 '?' 的特殊符號喔!");
return false;
}
}
</script>
<p>Name: <textarea onBlur="check(this)">Hello World</textarea>
<button>我是測試按鈕</button>
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
石頭
iT邦高手 1 級 ‧ 2017-09-13 17:00:01
最佳解答

正規表示法 是你的好夥伴
連結
如果條件不多也可判斷字串是否含有特殊字元

看更多先前的回應...收起先前的回應...
小斑 iT邦新手 3 級 ‧ 2017-09-13 19:31:56 檢舉

好的,我試試看,謝謝

小斑 iT邦新手 3 級 ‧ 2017-09-14 09:42:29 檢舉

請問我如何在前端先取到編輯的值呢?

因為使用Jeditable,在按下「修改」送出表單時,Jeditable預設後端會接收到兩個POST變數:$_POST['id']和$_POST ['value']。

$_POST['id']的值等於前述放在div裡的id值,$ _POST['value']則是在表單欄位內輸入的值。

但使用這個外掛,我不知道如何在前端取到編輯的值,麻煩指點,謝謝

/images/emoticon/emoticon41.gif

小斑 iT邦新手 3 級 ‧ 2017-09-14 10:03:44 檢舉

或是我如何將後端取到的值進行檢查?
在檢查發現有特殊符號後,又如何傳回前端?在前端顯示提醒訊息
謝謝

小斑 iT邦新手 3 級 ‧ 2017-09-15 16:12:53 檢舉

您好,我發現我的問題是使用 jeditable 外掛,我不知道如何告訴網頁我要檢查 textarea 的值,
jeditable script 如以下範例:

$('.jedit').editable('jeditable.php',{
type : 'textarea',
cancel : '取消',
submit : '修改',
indicator : '正在儲存中',
tooltip : '點擊修改',
width: "400px"
});

若使用以下方式測試沒問題,(但我需要使用 jeditable)

<script>
function check(obj) {
obj.value = obj.value.replace(/[\s ]+/g, "");
var re=/[/?/]/;
if (re.test(obj.value)){
obj.value=""
alert("不能有 '/' 或 '?' 的特殊符號喔!");
return false;
}
}
</script>
<p>Name: <textarea onBlur="check(this)">Hello World</textarea>
<button>我是測試按鈕</button>
石頭 iT邦高手 1 級 ‧ 2017-09-15 18:06:45 檢舉

http://jsfiddle.net/5ve3awc6/5/
給你參考一下

1.取得textarea
2.判斷textarea是否合法,不合法跳alert...後續動作

小斑 iT邦新手 3 級 ‧ 2017-09-18 10:29:16 檢舉

太感謝您了!!!/images/emoticon/emoticon41.gif
終於順利解決問題了/images/emoticon/emoticon42.gif

小斑 iT邦新手 3 級 ‧ 2018-04-17 10:03:15 檢舉

請問不合法跳alert...後續動作,若想要清空原本輸入框的內容(一樣是使用jeditable),應該怎麼做呢?謝謝

我要發表回答

立即登入回答