membatasi slug url dengan javascript

Kenapa pas diketik undefined ya?

Js

 var x = document.getElementsByClassName('bam');

x[0].onkeyup = function() {
	x[1].value = this.value.toLowerCase().replace(/[^a-z\d-]/gi, '-').replace(/-+/g, '-').replace(/^-|-$/g, "").maxlength;
};

HTML

 <p>title: <input type="text" class="bam"></p>
<p>slug: <input type="text" class="bam" maxlength="10"></p>
avatar fadhelmurphy
@fadhelmurphy

19 Kontribusi 1 Poin

Diperbarui 6 tahun yang lalu

3 Jawaban:

Ada kesalahan gan: Itu pada event "onkeyup", untuk value si "x[1]", terakhinya kenapa ada keyword "maxlength"? Kalo tujuan untuk mengambil maxlength si textboxnya, syntax-nya salah, yang bener "maxLength".

Ini coba ane benerin:

var x = document.getElementsByClassName('bam');

x[0].onkeyup = function() {
if (this.value.length < x[1].maxLength) {
	x[1].value = this.value.toLowerCase().replace(/[^a-z\d-]/gi, '-').replace(/-+/g, '-').replace(/^-|-$/g, "");
} else return false;
};

Noted: Ane tambahin coditional untuk ngecek "maxLength"-nya.

Semoga fix ya.

avatar nurimansyah
@nurimansyah

98 Kontribusi 87 Poin

Dipost 6 tahun yang lalu

Btw debug nya gimana ya mas? #barumainJS

avatar fadhelmurphy
@fadhelmurphy

19 Kontribusi 1 Poin

Dipost 6 tahun yang lalu

Jawaban Terpilih

Kalo untuk error "undefined", emang biasanya dia ga throw error, jadi dari console ga keliatan. Jadi, untuk error kaya gini emang harus di cek satu-satu per baris.

Kalo saya biasanya buat unit-test dulu (paling enak pake metode BDD), jadi apapun inputan-nya dan apapun output-nya, bisa ke handle walaupun hasilnya undefined.

Kalo mau coba, boleh cari-cari tutor sama best practicenya untuk unit-testing. Saran saya langsung start pake metode BDD, karena kalo TDD terlalu luas scope-nya >,< Untuk unit-test sendiri, buat javascript pake Jasmine JS atau Mocha JS + Chai JS.

Semoga membantu ya... CMIIW

avatar nurimansyah
@nurimansyah

98 Kontribusi 87 Poin

Dipost 6 tahun yang lalu

Login untuk ikut Jawaban