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
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
63 additions
and
55 deletions
+63
-55
resources/views/backend/mahasiswa/proposal/create.blade.php
+63
-55
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
">
...
@@ -147,7 +147,7 @@
...
@@ -147,7 +147,7 @@
var url = window.URL.createObjectURL(this.files[0]);
var url = window.URL.createObjectURL(this.files[0]);
$('#pdfViewer').attr('src', url);
$('#pdfViewer').attr('src', url);
});
});
// Reset iframe saat modal ditutup
// Reset iframe saat modal ditutup
$('#pdfModal').on('hidden.bs.modal', function (e) {
$('#pdfModal').on('hidden.bs.modal', function (e) {
$('#pdfViewer').attr('src', '');
$('#pdfViewer').attr('src', '');
...
@@ -165,7 +165,7 @@
...
@@ -165,7 +165,7 @@
// Munculkan modal
// Munculkan modal
$('#pdfModal').modal('show');
$('#pdfModal').modal('show');
});
});
// Reset iframe saat modal ditutup
// Reset iframe saat modal ditutup
$('#pdfModal').on('hidden.bs.modal', function (e) {
$('#pdfModal').on('hidden.bs.modal', function (e) {
$('#view-pdf').attr('src', '');
$('#view-pdf').attr('src', '');
...
@@ -177,13 +177,13 @@
...
@@ -177,13 +177,13 @@
$(document).ready(function () {
$(document).ready(function () {
$('#input-file').on('change', function (e) {
$('#input-file').on('change', function (e) {
var fileInput = e.target.files[0];
var fileInput = e.target.files[0];
// Periksa apakah ada file yang dipilih
// Periksa apakah ada file yang dipilih
if (!fileInput) {
if (!fileInput) {
alert('Silakan pilih file PDF terlebih dahulu.');
alert('Silakan pilih file PDF terlebih dahulu.');
return;
return;
}
}
// Periksa tipe file (harus PDF)
// Periksa tipe file (harus PDF)
if (fileInput.type !== 'application/pdf') {
if (fileInput.type !== 'application/pdf') {
alert('File harus berupa PDF.');
alert('File harus berupa PDF.');
...
@@ -191,7 +191,7 @@
...
@@ -191,7 +191,7 @@
$('#input-file').val('');
$('#input-file').val('');
return;
return;
}
}
// Periksa ukuran file (maksimal 5MB)
// Periksa ukuran file (maksimal 5MB)
if (fileInput.size > 5 * 1024 * 1024) {
if (fileInput.size > 5 * 1024 * 1024) {
alert('Ukuran file maksimal adalah 5MB.');
alert('Ukuran file maksimal adalah 5MB.');
...
@@ -200,23 +200,23 @@
...
@@ -200,23 +200,23 @@
return;
return;
}
}
});
});
// Fungsi untuk tombol "
Preview
"
// Fungsi untuk tombol "
Preview
"
$('#btnPreview').click(function() {
$('#btnPreview').click(function() {
var fileInput = $('#input-file')[0].files[0];
var fileInput = $('#input-file')[0].files[0];
// Periksa apakah ada file yang dipilih
// Periksa apakah ada file yang dipilih
if (!fileInput) {
if (!fileInput) {
alert('Silakan pilih file PDF terlebih dahulu.');
alert('Silakan pilih file PDF terlebih dahulu.');
return;
return;
}
}
// Tampilkan pratinjau PDF di dalam modal jika file memenuhi syarat
// Tampilkan pratinjau PDF di dalam modal jika file memenuhi syarat
var url = URL.createObjectURL(fileInput);
var url = URL.createObjectURL(fileInput);
$('#view-pdf').attr('src', url);
$('#view-pdf').attr('src', url);
$('#pdfModal').modal('show');
$('#pdfModal').modal('show');
});
});
// Reset iframe saat modal ditutup
// Reset iframe saat modal ditutup
$('#pdfModal').on('hidden.bs.modal', function (e) {
$('#pdfModal').on('hidden.bs.modal', function (e) {
$('#view-pdf').attr('src', '');
$('#view-pdf').attr('src', '');
...
@@ -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;
}
}
document.getElementById('invalidInput').style.display = 'none';
// Izinkan tombol panah
return true;
if (charCode >= 37 && charCode <= 40) {
}
document.getElementById('invalidInput').style.display = 'none';
return true;
function formatRupiah(el) {
var val = el.value.trim();
// Jika input kosong, reset flag 'rpAdded' dan hitungan titik
if (val === '') {
rpAdded = false;
dotCount = 0;
return;
}
}
// Tambahkan 'Rp0.' jika input diawali dengan titik (.) dan 'Rp' belum ditambahkan sebelumnya
// Izinkan hanya angka 0–9
if (val.startsWith('.') && !rpAdded) {
if (charCode >= 48 && charCode <= 57) {
val = '0.';
document.getElementById('invalidInput').style.display = 'none';
rpAdded = true; // Set flag 'rpAdded' menjadi true
return true;
dotCount = 1; // Tambahkan satu titik
} else if (!rpAdded) {
// Tambahkan 'Rp' jika 'Rp' belum ditambahkan sebelumnya
val;
rpAdded = true; // Set flag 'rpAdded' menjadi true
}
}
// Hitung jumlah titik (.) dalam input
// Selain itu dianggap tidak valid
dotCount = (val.match(/\./g) || []).length;
document.getElementById('invalidInput').style.display = 'block';
return false;
}
// Tampilkan peringatan jika terdapat lebih dari satu titik (.) dan sembunyikan peringatan input tidak valid
// Dipanggil dari onkeyup dan juga di-binding pada event input
if (dotCount > 1) {
// untuk membersihkan semua karakter non-angka (termasuk hasil paste).
document.getElementById('dotWarning').style.display = 'block';
function formatRupiah(el) {
document.getElementById('invalidInput').style.display = 'none'; // Sembunyikan peringatan input tidak valid
if (!el) return;
var secondDotIndex = val.indexOf('.', val.indexOf('.') + 1);
var cleaned = (el.value || '').replace(/\D+/g, ''); // hapus semua non-digit
val = val.slice(0, secondDotIndex) + val.slice(secondDotIndex + 1); // Hapus titik (.) yang berlebihan dari input
if (cleaned !== el.value) {
dotCount = 1; // Set jumlah titik kembali menjadi 1
document.getElementById('invalidInput').style.display = 'block';
} else {
document.getElementById('dotWarning').style.display = 'none'; // Sembunyikan peringatan titik (.) berlebihan
}
}
el.value = cleaned;
el.value = val;
}
}
// 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;
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 {
invalid.style.display = 'none';
}
});
});
})();
</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