Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
simpmw
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Alfiro Pratama
simpmw
Commits
bd437915
Commit
bd437915
authored
Mar 11, 2026
by
Alfiro Pratama
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
usulan dana numeric full angka
parent
6929b02f
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
48 additions
and
40 deletions
+48
-40
resources/views/backend/mahasiswa/proposal/create.blade.php
+48
-40
No files found.
resources/views/backend/mahasiswa/proposal/create.blade.php
View file @
bd437915
...
@@ -88,10 +88,10 @@
...
@@ -88,10 +88,10 @@
<div class="
col
-
sm
-
10
col
-
lg
-
10
">
<div class="
col
-
sm
-
10
col
-
lg
-
10
">
<div class="
input
-
group
">
<div class="
input
-
group
">
<span class="
input
-
group
-
text
">Rp</span>
<span class="
input
-
group
-
text
">Rp</span>
<input class="
form
-
control
" type="
text
" id="
usulan_dana
" name="
usulan_dana
" value="
{{
old
(
'usulan_dana'
)
}}
" placeholder="
Dana
yang
ingin
diajukan
(
cth
:
950000
atau
950000.50
|
tanda
(
.
)
hanya
untuk
nominal
desimal
)
" required onkeypress="
return
isNumberKey
(
event
)
" onkeyup="
formatRupiah
(
this
)
">
<input class="
form
-
control
" type="
text
" id="
usulan_dana
" name="
usulan_dana
" value="
{{
old
(
'usulan_dana'
)
}}
" placeholder="
Dana
yang
ingin
diajukan
(
cth
:
950000
)
" required onkeypress="
return
isNumberKey
(
event
)
" onkeyup="
formatRupiah
(
this
)
">
</div>
</div>
<small id="
invalidInput
" class="
text
-
danger
" style="
display
:
none
;
">Harap masukkan angka
atau desimal (contoh: 950000 atau 950000.5
0)</small>
<small id="
invalidInput
" class="
text
-
danger
" style="
display
:
none
;
">Harap masukkan angka
(contoh: 95000
0)</small>
<small id="
dotWarning
" style="
display
:
none
;
color
:
red
;
">Simbol titik (.) tidak boleh diinputkan lebih dari 1</small>
{{-- <small id="
dotWarning
" style="
display
:
none
;
color
:
red
;
">Simbol titik (.) tidak boleh diinputkan lebih dari 1</small> --}}
</div>
</div>
</div>
</div>
<div class="
mb
-
0
d
-
flex
justify
-
content
-
end
">
<div class="
mb
-
0
d
-
flex
justify
-
content
-
end
">
...
@@ -224,60 +224,68 @@
...
@@ -224,60 +224,68 @@
});
});
</script>
</script>
<script>
<script>
var rpAdded = false; // Flag untuk menandai apakah 'Rp' sudah ditambahkan
// Hanya izinkan input angka untuk usulan_dana.
var dotCount = 0; // Menghitung jumlah titik (.) yang sudah dimasukkan
// Jika ada karakter non-angka (huruf, simbol, spasi, koma, titik, dll),
// maka akan muncul pesan error #invalidInput dan karakter tersebut dibersihkan.
// Dipanggil dari atribut onkeypress untuk memblokir sebagian besar input non-angka.
function isNumberKey(evt) {
function isNumberKey(evt) {
var charCode = (evt.which) ? evt.which : event.keyCode;
var e = evt || window.event;
var charCode = e.which ? e.which : e.keyCode;
// Cek apakah karakter yang dimasukkan adalah angka atau titik (.) dan batasi jumlah titik menjadi 1
// Izinkan tombol kontrol: backspace, tab, enter, esc
if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) {
if (charCode === 8 || charCode === 9 || charCode === 13 || charCode === 27) {
document.getElementById('invalidInput').style.display = 'block';
document.getElementById('invalidInput').style.display = 'none';
document.getElementById('dotWarning').style.display = 'none'; // Sembunyikan peringatan titik (.) berlebihan
return true;
return false;
}
}
// Izinkan tombol panah
if (charCode >= 37 && charCode <= 40) {
document.getElementById('invalidInput').style.display = 'none';
document.getElementById('invalidInput').style.display = 'none';
return true;
return true;
}
}
function formatRupiah(el) {
// Izinkan hanya angka 0–9
var val = el.value.trim();
if (charCode >= 48 && charCode <= 57) {
document.getElementById('invalidInput').style.display = 'none';
return true;
}
// Jika input kosong, reset flag 'rpAdded' dan hitungan titik
// Selain itu dianggap tidak valid
if (val === '') {
document.getElementById('invalidInput').style.display = 'block';
rpAdded = false;
return false;
dotCount = 0;
return;
}
}
// Tambahkan 'Rp0.' jika input diawali dengan titik (.) dan 'Rp' belum ditambahkan sebelumnya
// Dipanggil dari onkeyup dan juga di-binding pada event input
if (val.startsWith('.') && !rpAdded) {
// untuk membersihkan semua karakter non-angka (termasuk hasil paste).
val = '0.';
function formatRupiah(el) {
rpAdded = true; // Set flag 'rpAdded' menjadi true
if (!el) return;
dotCount = 1; // Tambahkan satu titik
var cleaned = (el.value || '').replace(/\D+/g, ''); // hapus semua non-digit
} else if (!rpAdded
) {
if (cleaned !== el.value
) {
// Tambahkan 'Rp' jika 'Rp' belum ditambahkan sebelumnya
document.getElementById('invalidInput').style.display = 'block';
val;
}
rpAdded = true; // Set flag 'rpAdded' menjadi true
el.value = cleaned;
}
}
// Hitung jumlah titik (.) dalam input
// Pastikan validasi juga berjalan saat user melakukan paste atau input lainnya.
dotCount = (val.match(/\./g) || []).length;
(function () {
document.addEventListener('DOMContentLoaded', function () {
var field = document.getElementById('usulan_dana');
var invalid = document.getElementById('invalidInput');
if (!field || !invalid) return;
// Tampilkan peringatan jika terdapat lebih dari satu titik (.) dan sembunyikan peringatan input tidak valid
field.addEventListener('input', function () {
if (dotCount > 1) {
var before = field.value;
document.getElementById('dotWarning').style.display = 'block';
var cleaned = before.replace(/\D+/g, '');
document.getElementById('invalidInput').style.display = 'none'; // Sembunyikan peringatan input tidak valid
field.value = cleaned;
var secondDotIndex = val.indexOf('.', val.indexOf('.') + 1);
if (before !== cleaned) {
val = val.slice(0, secondDotIndex) + val.slice(secondDotIndex + 1); // Hapus titik (.) yang berlebihan dari input
invalid.style.display = 'block';
dotCount = 1; // Set jumlah titik kembali menjadi 1
} else {
} else {
document.getElementById('dotWarning').style.display = 'none'; // Sembunyikan peringatan titik (.) berlebihan
invalid.style.display = 'none';
}
el.value = val;
}
}
});
});
})();
</script>
</script>
@endsection
@endsection
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment