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 @@
<div class="
col
-
sm
-
10
col
-
lg
-
10
">
<div class="
input
-
group
">
<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>
<small id="
invalidInput
" class="
text
-
danger
" style="
display
:
none
;
">Harap masukkan angka
atau desimal (contoh: 950000 atau 950000.5
0)</small>
<small id="
dotWarning
" style="
display
:
none
;
color
:
red
;
">Simbol titik (.) tidak boleh diinputkan lebih dari 1</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> --}}
</div>
</div>
<div class="
mb
-
0
d
-
flex
justify
-
content
-
end
">
...
...
@@ -224,60 +224,68 @@
});
</script>
<script>
var rpAdded = false; // Flag untuk menandai apakah 'Rp' sudah ditambahkan
var dotCount = 0; // Menghitung jumlah titik (.) yang sudah dimasukkan
// Hanya izinkan input angka untuk usulan_dana.
// 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) {
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
if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) {
document.getElementById('invalidInput').style.display = 'block';
document.getElementById('dotWarning').style.display = 'none'; // Sembunyikan peringatan titik (.) berlebihan
return false;
// Izinkan tombol kontrol: backspace, tab, enter, esc
if (charCode === 8 || charCode === 9 || charCode === 13 || charCode === 27) {
document.getElementById('invalidInput').style.display = 'none';
return true;
}
// Izinkan tombol panah
if (charCode >= 37 && charCode <= 40) {
document.getElementById('invalidInput').style.display = 'none';
return true;
}
function formatRupiah(el) {
var val = el.value.trim();
// Izinkan hanya angka 0–9
if (charCode >= 48 && charCode <= 57) {
document.getElementById('invalidInput').style.display = 'none';
return true;
}
// Jika input kosong, reset flag 'rpAdded' dan hitungan titik
if (val === '') {
rpAdded = false;
dotCount = 0;
return;
// Selain itu dianggap tidak valid
document.getElementById('invalidInput').style.display = 'block';
return false;
}
// Tambahkan 'Rp0.' jika input diawali dengan titik (.) dan 'Rp' belum ditambahkan sebelumnya
if (val.startsWith('.') && !rpAdded) {
val = '0.';
rpAdded = true; // Set flag 'rpAdded' menjadi true
dotCount = 1; // Tambahkan satu titik
} else if (!rpAdded
) {
// Tambahkan 'Rp' jika 'Rp' belum ditambahkan sebelumnya
val;
rpAdded = true; // Set flag 'rpAdded' menjadi true
// Dipanggil dari onkeyup dan juga di-binding pada event input
// untuk membersihkan semua karakter non-angka (termasuk hasil paste).
function formatRupiah(el) {
if (!el) return;
var cleaned = (el.value || '').replace(/\D+/g, ''); // hapus semua non-digit
if (cleaned !== el.value
) {
document.getElementById('invalidInput').style.display = 'block';
}
el.value = cleaned;
}
// Hitung jumlah titik (.) dalam input
dotCount = (val.match(/\./g) || []).length;
// Pastikan validasi juga berjalan saat user melakukan paste atau input lainnya.
(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
if (dotCount > 1) {
document.getElementById('dotWarning').style.display = 'block';
document.getElementById('invalidInput').style.display = 'none'; // Sembunyikan peringatan input tidak valid
var secondDotIndex = val.indexOf('.', val.indexOf('.') + 1);
val = val.slice(0, secondDotIndex) + val.slice(secondDotIndex + 1); // Hapus titik (.) yang berlebihan dari input
dotCount = 1; // Set jumlah titik kembali menjadi 1
field.addEventListener('input', function () {
var before = field.value;
var cleaned = before.replace(/\D+/g, '');
field.value = cleaned;
if (before !== cleaned) {
invalid.style.display = 'block';
} else {
document.getElementById('dotWarning').style.display = 'none'; // Sembunyikan peringatan titik (.) berlebihan
}
el.value = val;
invalid.style.display = 'none';
}
});
});
})();
</script>
@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