ajax
Copy // 範例
$.ajax({
url: "url",
async: false,
data:{
pid : 123,
action: "456"
},
dataType: 'json',
success: function(data) {
console.log(data)
},
error: function(error){
console.log(error)
}
});
常見參數:
type = 請求方式,預設get
async = true or false,預設為true,所有請求均為非同步請求。改為false則同步請求將鎖住瀏覽器,使用者其它操作必須等待請求完成才可以執行。
contentType = 傳送資訊至伺服器時內容編碼型別。預設:application/x-www-form-urlencoded
data = 發送到伺服器的資料。將自動轉換為請求字串格式。
dataType = 預期伺服器返回的資料型別。
https://codertw.com/%E5%89%8D%E7%AB%AF%E9%96%8B%E7%99%BC/272853/
https://blog.reh.tw/archives/662
介紹
https://codertw.com/%E5%89%8D%E7%AB%AF%E9%96%8B%E7%99%BC/272853/
success and error
http://www.pureexample.com/tw/jquery/ajax-success-and-error.html
另一種post寫法 (尚未與ajax比較)
Copy $.post('superman', { field1: "hello", field2 : "hello2"},
function(returnedData){
console.log(returnedData);
}).fail(function(){
console.log("error");
});
https://stackoverflow.com/questions/18697034/how-to-pass-parameters-in-ajax-post/35590754
傳送json資料 (400)
https://stackoverflow.com/questions/21738663/getting-json-in-flask-from-jquery-ajax
用enter送出
https://www.formget.com/submit-your-form-on-pressing-enter-key-using-jquery/
https://stackoverflow.com/questions/699065/submitting-a-form-on-enter-with-jquery
json物件處理
使用ajax post時可用JSON.stringify()轉換型態後再傳送
使用ajax get接收回傳結果時可用JSON.parse()轉換型態
Copy var obj = JSON.parse('{ "name":"John", "age":30, "city":"New York"}');
var obj = { 'name': "John", "age": 30, "city": "New York" };
var myJSON = JSON.stringify(obj);
for (key in obj ){
alert(obj[key]);
}
https://www.w3schools.com/js/js_json_parse.asp
遍歷方法
https://codertw.com/%E5%89%8D%E7%AB%AF%E9%96%8B%E7%99%BC/258763/
https://t.codebug.vip/questions-342113.htm
替換特殊字元(換行、雙引號)
https://stackoverflow.com/questions/4253367/how-to-escape-a-json-string-containing-newline-characters-using-javascript
日期選擇器
http://www.daterangepicker.com/
https://www.wfublog.com/2017/08/jquery-date-range-picker-bootstrap.html
https://dotblogs.com.tw/shadow/2017/11/28/001719
取得check box值
http://blog.twbryce.com/jquery-get-checkbox-value/
常用語法
Copy // array to string
var array = ['a', 'b', 'c'];
array.toString(); // result: a,b,c
// join
array.join("+++")
// 判斷長度
if (array.length == 0){
console.log(array.length)
}
// 取得check box值,name記得要改
var cbxVehicle = new Array();
$('input:checkbox:checked[name="vehicle"]').each(function(i) { cbxVehicle[i] = this.value; });
// 取得json的key & value
var z = {"123":"/user/home", "456":"test"}
for (var key in z) {
console.log(key); //获取key值
console.log(z[key]); //获取对应的value值
}
// 判斷key是否存在
if (json_object.hasOwnProperty('name')) {
//do struff
}
// 替換特殊字元後在parse 斜線的斜線數量有差
var myJSONString = JSON.stringify(myJSON);
var myEscapedJSONString = myJSONString.replace(/\\n/g, "\\n")
.replace(/\\'/g, "\\'")
.replace(/\\"/g, '\\"')
.replace(/\\&/g, "\\&")
.replace(/\\r/g, "\\r")
.replace(/\\t/g, "\\t")
.replace(/\\b/g, "\\b")
.replace(/\\f/g, "\\f");
// 判斷是否為空字典
jQuery.isEmptyObject({}); // true
jQuery.isEmptyObject({ foo: "bar" }); // false
checkbox 全選
http://dev.sopili.net/2013/03/bootstrap-css.html
cdn介紹
https://blog.csdn.net/zyz1985/article/details/6828790
https://hkitblog.com/%E4%B8%8D%E5%8F%AF%E4%B8%8D%E7%9F%A5%E7%9A%84-cdn-%E7%A8%AE%E9%A1%9E%EF%BC%81%E7%94%9A%E9%BA%BC%E6%98%AF%E5%8B%95%E6%85%8B%E3%80%81%E9%9D%9C%E6%85%8B-cdn%EF%BC%9Fevent-driven-%E7%AE%97%E6%98%AF/
string 格式化
Copy String.format = function() {
if (arguments.length == 0)
return null;
var str = arguments[0];
for ( var i = 1; i < arguments.length; i++) {
var re = new RegExp('\\{' + (i - 1) + '\\}', 'gm');
str = str.replace(re, arguments[i]);
}
return str;
};
// var a = "我喜欢吃{0},也喜欢吃{1},但是最喜欢的还是{0},偶尔再买点{2}";
// alert(String.format(a, "苹果","香蕉","香梨"));
// 结果:我喜欢吃苹果,也喜欢吃香蕉,但是最喜欢的还是苹果,偶尔再买点香梨
https://www.cnblogs.com/taoweiji/p/3260883.html
radio
Copy // 隨著radio變更html
$('#my_radio_box').change(function() {
var checked_id = $('input[type=radio][name=inlineDefaultRadiosExample]:checked').attr('id') // 選中的radio值
var selected_value = $("input[name='inlineDefaultRadiosExample']:checked").val(); // 選中的radio值
$("#predict_result").html(crf_data[checked_id]['html']);
});
https://blog.csdn.net/enjoyo/article/details/1700228
https://blog.xuite.net/vv650812/twblog/229550316-jQuery+%E4%B9%8B+checkbox+%E5%8F%8A+radio+%E5%8F%96%E5%80%BC%E5%8F%8A%E8%A8%AD%E5%AE%9A%E5%80%BC%E7%9A%84%E6%AD%A3%E7%A2%BA%E6%96%B9%E6%B3%95
select
Copy <select id="sfs" name="sfsname">
<option value="1">第一項</option>
<option value="2">第二項</option>
<option value="3">第三項</option>
</select>
取值
Copy var s= $("#sfs").val();
http://n.sfs.tw/content/index/10047
onload vs ready
ready,表示文件結構已經載入完成(不包含圖片等非文字媒體檔案)
onload,指示頁 麵包含圖片等檔案在內的所有元素都載入完成。
ready 在onload 前載入!!!
https://codertw.com/%E5%89%8D%E7%AB%AF%E9%96%8B%E7%99%BC/290536/
function
Copy // 1.匿名函式(因為沒任何名稱,所以其他程式碼並沒有辦法呼叫他,所以要用就要重寫一次)
$(".guess_box").click(function(){
xxxx;
});
// 2.具名函式(呼叫具名函式有以下兩種方式)
// A.函式宣告
function myFunc1()
{
$("div").hide();
}
// 呼叫方法:
myFunc1();
// B.函式表達式
var myFunc2 = function()
{
$("div").show();
}
// 呼叫方法(不需要()):
$("myElement").click(myFunc2);
$( document ).ready(function() {
// 在這撰寫javascript程式碼
});
https://melomelo1988.pixnet.net/blog/post/263934328
https://matthung0807.blogspot.com/2017/11/jquery-document-ready.html
button事件觸發
Copy $("button#demo").click(function(){$("img").hide()})
https://www.w3school.com.cn/jquery/jquery_ref_events.asp
https://codertw.com/%E5%89%8D%E7%AB%AF%E9%96%8B%E7%99%BC/232048/
window.onload vs $(document).ready
ready:DOM下載完成就觸發function,啟動時機較早,前一次跟後一次所設定的函式都會被執行。
onload:除了DOM,連同其中的圖片影音的內容都下載完才會觸發function,啟動時機較晚,後一次所設定的函式會複寫上一次的。
https://ithelp.ithome.com.tw/articles/10092601
https://matthung0807.blogspot.com/2017/11/jquery-document-ready.html
Copy $( document ).ready(function() {
// 在這撰寫javascript程式碼
});
# 若不放在ready當中則可能無法綁定到該物件,造成此行程式無效
$("#dom_id").html("123")
複寫
onload只會執行第二個,第一個會被忽略
https://blog.xuite.net/coke750101/networkprogramming/31375424-%5BjQuery%5D%24%28document%29.ready%E5%92%8Conload%E4%BA%8B%E4%BB%B6%E7%9A%84%E5%B7%AE%E7%95%B0
Copy window.onload=function() {
alert('alert1');
};
window.onload=function() {
alert('alert2');
};
setInterval
https://neohsuxoops.blogspot.com/2018/04/ajaxfunction.html
https://kuro.tw/posts/2019/02/23/%E8%AB%87%E8%AB%87-JavaScript-%E7%9A%84-setTimeout-%E8%88%87-setInterval/
https://codertw.com/%E5%89%8D%E7%AB%AF%E9%96%8B%E7%99%BC/276882/
.html() .text() .val()
http://androchen.blogspot.com/2013/04/jquery-html-text-val.html
jQuery equivalent to “getElementsByName”
Copy $('[name="somenamehere"]');
https://stackoverflow.com/questions/9711917/jquery-equivalent-to-getelementsbyname
更新CSS
Copy $("#td_id").addClass('newClass') //會累加,越來越長
$("#myParagraph").css({"backgroundColor": "black", "color": "white"}); //新增屬性
全域變數 vs 區域變數
1.變數宣告在function外面,不管有沒有加上var都是全域變數
2.變數宣告在function之內,沒有加上var就會成為全域變數
https://engmeter.blogspot.com/2015/03/jqueryjquery.html
settimeout
Copy setTimeout(
function()
{
//do something special
}, 5000);
)
confirm
Copy var txt;
var r = confirm("Press a button!");
if (r == true) {
txt = "You pressed OK!";
} else {
txt = "You pressed Cancel!";
}
https://www.w3schools.com/jsref/met_win_confirm.asp
textarea 的取值和給值
Copy var html=$("#desc").val();
$("#desc").val("write content");
if( $("#desc").val()==""){
$("#desc").focus();
alert("請務必填入回應內容");return false;
}
// 移除空格確定是否空值
if (!$.trim($("#desc").val())) {
..
}
http://n.sfs.tw/content/index/10044
https://www.w3schools.com/tags/tag_textarea.asp
onchange event for input type=“number”
Copy $(":input").bind('keyup mouseup', function () {
alert("changed");
});
https://stackoverflow.com/questions/9609731/onchange-event-for-input-type-number
四捨五入
Copy function formatFloat(num, pos)
{
var size = Math.pow(10, pos);
return Math.round(num * size) / size;
}
alert(formatFloat("1109.1893", 2));
https://ching119.pixnet.net/blog/post/59675573
preventDefault
防止url直接開啟,如:download
Copy $("a").click(function(event){
event.preventDefault();
});
https://www.w3school.com.cn/jquery/event_preventdefault.asp