iT邦幫忙

0

java script checking 重複value問題

  • 分享至 

  • xImage

如果有3個row,當第2和第3個row的value重複了,會顯示"duplicate value",
但當第1個row和第3個row重複時,沒有得到"duplicate value",
我只知有走進去console.log('same'),但沒有顯示"duplicate value",
不太懂我哪裡錯了。

以下是得到的結果和代碼

row2 和row3 重複結果
https://ithelp.ithome.com.tw/upload/images/20220122/20135141IJLi3livyv.jpg

row1 和row3 重複結果
https://ithelp.ithome.com.tw/upload/images/20220122/20135141L2ovlUGa7w.jpg

function checking(row_id) {
        let trLength = $('#table tbody tr').length
        for (i = 1; i <= trLength; i++) {
            let optionVal = $('#option' + i).val()
            let selectOptional = $('#option' + row_id).val() 
            if (optionVal == selectOptional) {
                if(i != row_id){
                  console.log('same')
                $('#duplicate_tips' + row_id).text("duplicate value, please correction");
                $('#duplicate_tips' + row_id).css("color", "red");
                $('#submit').attr('disabled', 'true');  
                }
            } else {
                console.log('not same')
                $('#duplicate_tips' + row_id + '').text("");
                $('#submit').removeAttr('disabled');
            }
        }
    }
qpalzm iT邦研究生 5 級 ‧ 2022-01-22 17:15:11 檢舉
想請問 if (actionConfigVal == selectActionConfigVal) 的actionConfigVal 是甚麼?!看不出來有宣告到
nick12345 iT邦新手 4 級 ‧ 2022-01-22 18:39:58 檢舉
修改了
fillano iT邦超人 1 級 ‧ 2022-01-23 10:41:03 檢舉
把該檢查的都放進console.log,像這樣:console.log('same', i, row_id);看看走進這裡時條件是否符合你的預期。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

2
天黑
iT邦研究生 5 級 ‧ 2022-01-22 17:13:05

可能需要提供完整一點的程式碼喔
actionConfigVal這個變數就找不到來源...

先提供你其他想法,例如select onchange時紀錄被選的值,存成array,
有新值被選取時用indexOf來判斷是不是已經存在,移除時一併刪除array中的值,提供你參考

補充說明
簡單寫一個,但這是效能很差的版本,你可以再看看

html

<div id="area1">
<select>
    <option>1</option>
    <option>2</option>
    <option>3</option>
</select>
</div>

<button id="add">add</button>
<button id="check">check</button>

js

$(function() {

    
    function addEvent(){
        $('#add').on('click',function(){
    		var html = '<select><option>1</option><option>2</option><option>3</option></select>';
    		$('#area1').append(html);  
        selectOnChangeBind();
    	});
    }
    
    function checkSelectDuplicate(){
        //效能不好的部分,這部分會每次掃描全部,搭配selectOnChange有其他作法
    		var temp = $('select').map((i, el) => el.value).get();     
        var result = temp.filter((item, index, arr) => {
								return arr.indexOf(item) === index;
						})
        var flag = temp.length == result.length;
        return flag;
    }
    
    function checkDuplicateEvent(){
        $('#check').on('click',function(){
						var flag = checkSelectDuplicate();
            console.log(flag);
    	  });
    }
    
    //function selectOnChangeBind(){
    //	$('select').on('change', function() {
  	//		//console.log( this.value );
		//	});
    //}
    
    addEvent();
    checkDuplicateEvent();
    //selectOnChangeBind();
    
});
nick12345 iT邦新手 4 級 ‧ 2022-01-22 18:57:54 檢舉

我修改了這樣,但效果一樣,有走進去,但沒有我想的結果

function checkOnce(row_id) {
        let trLength = $('#table tbody tr').length
        var array = []
        for (i = 1; i <= trLength; i++) {
            let optionVal  = $('#option' + i).val()
            let selectOptional  = $('#option' + row_id).val()
            if (optionVal == selectOptional  ) {
                if (i != row_id) {
                    array.push(option)
                }
            }
            if (array.indexOf(option) == 0) {
                console.log('same')
                $('#duplicate_tips' + row_id).text("duplicate value, please correction");
                    $('#duplicate_tips' + row_id).css("color", "red");
                    $('#submit').attr('disabled', 'true');  
            } else {
                console.log('not same')
                $('#duplicate_tips' + row_id + '').text("");
                $('#submit').removeAttr('disabled');
            }
        }
    }
天黑 iT邦研究生 5 級 ‧ 2022-01-24 15:40:18 檢舉

nick12345 有編輯內容了增加簡單範例 你可以再看看 減少for的部分我沒有處理,如果有理解我的說明,可以試著自己改進

我要發表回答

立即登入回答